enospcがjava.io.IOException
として通知されているため、他の多くのio関連の問題も同様に取り込むことができます。しかし、原因とエラーを検索することで、あなたがこのように、ズームインやENOSPC例外を処理するが、他のすべてを再スローすることができ、シグナリングです:
} catch (IOException ex) {
boolean itsanenospcex = false;
// make sure the cause is an ErrnoException
if (ex.getCause() instanceof libcore.io.ErrnoException) {
// if so, we can get to the causing errno
int errno = ((libcore.io.ErrnoException)ex.getCause()).errno;
// and check for the appropriate value
itsanenospcex = errno == OSConstants.ENOSPC;
}
if (itsanenospcex) {
// handle it
} else {
// if it's any other ioexception, rethrow it
throw ex;
}
}
追記:} catch (Exception e) {
がgenerally considered bad practiceです。
出典
2016-10-19 21:41:08
fvu
ありがとう、私はそれを理解する日が必要でした。実際にテスト目的でこのエラーをシミュレートするための推奨される方法はありますか? – Kenobi
ErrnoExceptionのコンストラクタがあり、errnoの値を受け取りますので、テストコードの中で新しいErrnoException( "functionname"、ENOSPC)をスローすることができます - 私はあなたがそのfunctionname文字列に入れなければならないものを念願していますが、テスト目的のために本当に重要です。 – fvu