public void Tweet(string title, string artist, string album) { string tweetBody = GenerateTweetBody(title, artist, album); try { _lorelei.PostTweet(tweetBody); } catch (UnauthorizedException) { var mbp = new MessageBoxPack("Twitterの認証に失敗しました\n設定から再度認証してください", "ツイート失敗", MessageBoxImage.Error); MessageBoxHelper.AddMessageBoxQueue(mbp); } catch (DuplicateTweetBodyException) { var mbp = new MessageBoxPack("同じ曲を連続してツイートできません", "ツイート失敗", MessageBoxImage.Error); MessageBoxHelper.AddMessageBoxQueue(mbp); } catch (TwitterServerNotWorkingWellException) { var mbp = new MessageBoxPack("Twitterサーバーからの応答がおかしいです", "ツイート失敗", MessageBoxImage.Error); MessageBoxHelper.AddMessageBoxQueue(mbp); } catch { var mbp = new MessageBoxPack("不明なエラーが発生しました", "ツイート失敗", MessageBoxImage.Error); MessageBoxHelper.AddMessageBoxQueue(mbp); } }
//集約エラーハンドラ private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { var messeage = "未知のエラーが発生しました。アプリケーションを終了します。\n\n"; string extMesseage = null; try { var ex = (Exception)e.ExceptionObject; messeage = "未知のエラーが発生しました。アプリケーションを終了します。\n\nエラー内容:\n"; try { var location = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); using (var sw = new StreamWriter(location + @"\log.txt")) { sw.WriteLine("Messeage:"); sw.WriteLine(ex.Message); sw.WriteLine(""); sw.WriteLine("InnerException:"); sw.WriteLine(ex.InnerException); sw.WriteLine(""); sw.WriteLine("Source:"); sw.WriteLine(ex.Source); sw.WriteLine(""); sw.WriteLine("TargetSite:"); sw.WriteLine(ex.TargetSite); sw.WriteLine(""); sw.WriteLine(""); sw.WriteLine("StackTrace:"); sw.WriteLine(ex.StackTrace); sw.Close(); } extMesseage = "\n\n\n実行フォルダに log.txt を生成しました。"; } catch { } MessageBoxHelper.AddMessageBoxQueue(new MessageBoxPack( messeage + ex.Message + extMesseage, "エラー", MessageBoxButton.OK, MessageBoxImage.Error)); } catch { MessageBoxHelper.AddMessageBoxQueue(new MessageBoxPack( messeage + "不明なエラー", "エラー", MessageBoxButton.OK, MessageBoxImage.Error)); } finally { Environment.Exit(1); } }