c# - Android,Xamarin:捕获随机异常:
问题描述
我有一点问题 - 有时我的应用程序在这里崩溃:
public override void OnWindowFocusChanged(Boolean hasFocus)
{
base.OnWindowFocusChanged(hasFocus);
if(intInstanz == 1 && boolTutorialWasAlreadyVisible == false)
{
new FancyShowCaseView.Builder(this) // if this crashes, we need clean rebuild
.Title(Resources.GetString(Resource.String.Tutorial1))
.TitleStyle(0, (int)GravityFlags.Bottom | (int)GravityFlags.Center)
.FocusOn(btnBackground)
.Build()
.Show();
boolTutorialWasAlreadyVisible = true;
}
}
它工作,工作,工作,然后突然。这可以通过清理项目来解决。但是,这甚至有时会在发布的版本上发生。这是一个大问题。FancyShowCaseView 是一个额外的组件——我无法控制它的作用。那么有没有办法在这里捕捉崩溃,如果它发生只是“跳过” .Show(); 也许?
那非常重要。谢谢!
解决方案
关于try catch语句的长话短说是,如果try
部分中的语句无法执行,代码会跳转到该catch
部分并执行那里的内容,可能会显示一个带有错误的对话框或记录异常。控件的特定例外情况FancyShowCaseView
可能在组件的文档中进行了描述,但对于初学者,您可以将Exception
类用作:
try
{
new FancyShowCaseView.Builder(this) // if this crashes, we need clean rebuild
.Title(Resources.GetString(Resource.String.Tutorial1))
.TitleStyle(0, (int)GravityFlags.Bottom | (int)GravityFlags.Center)
.FocusOn(btnBackground)
.Build()
.Show();
}
catch (Exception ex)
{
//log or show message
}
最后,您可能希望对组件失败而无法恢复的原因进行一个小研究。ex
object 应该为您提供有关问题所在的信息。
推荐阅读
- javascript - 使用 Jest 在函数数组上仅模拟一个函数
- sass - 调整 Sass @at-root 规则的路径
- python - python中颜色的检测
- web-scraping - Gmail Scraping:获取发件人电子邮件地址的更快方法?
- cmake-gui - 解析错误。需要一个命令名称,左括号带有文本“(”。配置不完整,发生错误
- ios - presentCodeRedemptionSheet() 不起作用
- mysql - Bycrpt 无法比较,总是发送空值
- java - JAX-WS 处理嵌套的 SOAP 元素
- node.js - 将 POST 请求从快递转发到邮件
- javascript - 直接从服务器而不是用户客户端单击按钮发送电子邮件