Tôi đã thu thập Internet trong một thời gian khá lâu với hy vọng giải pháp và tôi đã gặp một số câu trả lời, nhưng không có câu trả lời nào trong số này dường như đạt được những gì tôi muốn.Đấu tranh để hiểu Xamarin xử lý ngoại lệ
Tôi đang cố xử lý các ngoại lệ mà không khiến ứng dụng gặp sự cố. Thay vì ứng dụng chỉ đơn giản là thoát, tôi thà chụp ngoại lệ, trình bày cho người dùng một lỗi thân thiện với người dùng hơn (có thể là cảnh báo hộp thư) và cho phép họ tiếp tục hoạt động trong ứng dụng.
Có thể dừng ứng dụng khỏi tính toán không?
Con đường tôi hiện đang cố gắng để bắt này là như sau:
public class Login : Activity
{
int count = 1;
Session mySession;
protected override void OnCreate(Bundle bundle)
{
AndroidEnvironment.UnhandledExceptionRaiser += HandleAndroidException;
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Login);
Button button = FindViewById<Button>(Resource.Id.Login);
string accountCode = Resource.Id.AccountCode.ToString();
string password = Resource.Id.Password.ToString();
// button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); };
button.Click += delegate
{
throw new Exception("LETS THROW A RANDOM EXCEPTION");
};
}
void HandleAndroidException(object sender, RaiseThrowableEventArgs e)
{
Log.Error("INTERNAL DEBUG", "PLEASE HANDLE MY EXCEPTION!");
e.Handled = true;
System.Console.Write("YOU'VE JUST BEEN HANDLED!");
}
}
Như bạn có thể thấy tôi đang ném một ngoại lệ chung và cố gắng nắm bắt điều này với một UnhandledExceptionRaiser. Tôi đã sử dụng tài liệu này làm tài liệu tham khảo: http://androidapi.xamarin.com/index.aspx?link=E%3AAndroid.Runtime.AndroidEnvironment.UnhandledExceptionRaiser
Tôi có thể tìm thấy thư của mình trong công cụ "Đăng nhập thiết bị Android", tuy nhiên nó đang được kích hoạt SAU KHI xuất hiện lỗi ngoại lệ. Tôi nghĩ điều này có nghĩa là thứ gì đó bên trong Xamarin đang có vết nứt đầu tiên ở ngoại lệ và rơi xuống. Chắc chắn phải có một cách để ngăn chặn điều này?
Tôi đã thấy vô số ví dụ trực tuyến nơi mọi người đã đặt câu hỏi tương tự và không có giải pháp rõ ràng. Một số người đã cung cấp một số giải pháp, nhưng những điều này không thực sự làm những gì tôi đã dự đoán.
Đó là nghĩa đen boggling với tôi nếu điều này không thể được thực hiện.
Đây là lần đầu tiên tôi sử dụng Xamarin và cũng là lần đầu tiên tôi phát triển ứng dụng dành cho thiết bị di động để tôi xin lỗi nếu tôi không biết gì về bất cứ điều gì.
Xin vui lòng trợ giúp !!!
Cảm ơn Alex. Đánh giá cao phản hồi. Bạn có thể cho tôi một đề xuất hoặc hai đề xuất cho một số thành phần báo cáo không? Bạn có thể dành một phút để cũng xây dựng trên bằng cách sử dụng lớp Ứng dụng và cấu trúc lớp cơ bản bạn muốn trong suốt ứng dụng? cảm ơn! –
Các thành phần là HockeyApp và Raygun (là những cái tôi đã làm việc cùng). http://components.xamarin.com/gettingstarted/hockeyappandroid https://components.xamarin.com/view/raygun4net Và đối với lớp Ứng dụng, hãy xem câu trả lời đã chỉnh sửa của tôi. –
Cảm ơn Alex Tôi chắc chắn sẽ kiểm tra chúng. Vì vậy, khái niệm chung là tạo ra một lớp Ứng dụng và sau đó mỗi hoạt động thực hiện lớp ứng dụng? Xin lỗi - mới với Xamarin/mobile dev! –