Chris Buckett は、サーバーに障害が発生したときにサーバーを再起動する良い方法を教えてくれました。ただし、それでもサーバーがダウンすることは望ましくありません。
はtry-catch
同期コードに対してのみ機能します。
doSomething() {
try {
someSynchronousFunc();
someAsyncFunc().then(() => print('foo'));
} catch (e) {
// ...
}
}
非同期メソッドが完了または失敗すると、プログラムがメソッドで完了してから「かなり」doSomething
後に発生します。
非同期コードを記述するときは、通常、future を返すことによってメソッドを開始することをお勧めします。
Future doSomething() {
return new Future(() {
// your code here.
var a = b + 5; // throws and is caught.
return someAsyncCall(); // Errors are forwarded if you return the Future directly.
});
}
これにより、スローするコードがある場合、それらをキャッチし、呼び出し元がそれらを実行できるようになりcatchError()
ます。
このように記述した場合、少なくとも最上位レベルで何らかのエラー処理が行われていると仮定すると、クラッシュははるかに少なくなります。
Future を返すメソッドを呼び出すときはいつでも、(上記のように) 直接返すかcatchError()
、可能性のあるエラーをローカルで処理できるようにします。
ホームページに非常に長い記事がありますので、ぜひお読みください。