私は静的初期化ブロックを持っています。これは、ファイルへのロギングを設定します。何かがうまくいかない場合、私は静的ブロックから脱出したいだけです。これは可能ですか?私はif/elseアプローチを使用することができますが、シンプルなブレークを使用すると、コードがはるかに読みやすくなります。Javaの静的初期化ブロックからの切断
答えて
はおそらく、すべての例外をキャッチしたい:
static {
try {
// Initialization
}
catch (Exception exception) {
// Not much can be done here
}
}
しかし、注意してください:クラスをロードすることは失敗することはありませんが、いくつかまたは全ての静的フィールドが矛盾した状態にある可能性があります。
try/catchはどうですか?
try{}catch(){}
これはお探しのものですか?
label:
{
// blah blah
break label;
}
break文の下にあるラベルに壊れますか? – user489041
どういう意味ですか? –
ラベルはブロックの先頭になければなりません。ブロックする場所はブロックの最後です。 –
- それは例外である場合、試み使用{(新しい例外をスローする);}キャッチ
それが通常の処理であれば、IF-THEN-ELSE又はスイッチを使用
最終的にあなたがラベルを使用することができますが、私見それは非常に悪いスタイルです://boolean condition; static { label: { System.out.println("1"); if(condition) break label; System.out.println("2"); } }
HTMLコードタグは使用しないでください。あなたのコードをインデントするだけで(リスト内の4つのスペースまたは8)、コードはうまく表示されます。 –
あなたの静的ブロックはメソッドに私の意見では
static { init(); }
private static void init() {
// do something
if(test) return;
// do something
}
を呼び出すことができ、静的ブロックは、使用するフロー制御戦略の面で他のブロックとは異なるではありません。 BREAKは、(静的ブロックでも)読みやすいと思われる場所であればどこでも使用できますが、実際にはコードの読みやすさが低下し、IF ELSEアプローチが優れているという一般的な前提があります。
- 1. Java静的初期化ブロック
- 2. Javaの静的初期化ブロックから戻す方法
- 3. 春の静的初期化Springの静的初期化
- 4. 静的変数の初期化java
- 5. 初期化ブロックのアノテーション静的かどうか
- 6. 静的初期化、
- 7. 静的初期化
- 8. Javaで静的初期化ブロックを使用するのはなぜですか?
- 9. Java静的初期化子とリフレクション
- 10. Java外部クラス静的初期化
- 11. java:クラス初期化中に同じクラスの静的フィールドの初期化
- 12. ステートメントを切り替えて静的ブロック内の最終静的変数を初期化する
- 13. 静的初期化中のリソースの初期化?
- 14. Mockitoで静的初期化ブロックを使用する
- 15. Javaでの静的初期化と動的初期化の違いは何ですか?
- 16. 派生クラスの静的メンバー値からのPython静的メンバー初期化
- 17. 静的メンバーの初期化子のラムダスコープ
- 18. テンプレートクラスの静的変数の初期化
- 19. 静的変数Objective CからSwiftへのオブジェクトの初期化
- 20. C++静的constテンプレートメンバの初期化
- 21. 整数配列の静的初期化
- 22. 静的フィールド/プロパティの初期化
- 23. 静的なboost :: unordered_mapの初期化
- 24. ジェネリック静的フィールドの初期化
- 25. アンドロイドスタジオのOpenCV静的初期化
- 26. ExecutorServiceのスレッドセーフな静的初期化
- 27. Goでの静的初期化?
- 28. PHP静的変数の初期化
- 29. 非静的変数の初期化
- 30. 静的な初期化スレッドロックのLambdas
これはあなたのクラスを一貫性のない/使用不可能な状態にしますか? –
はい、そうです。ロギングクラスです。したがって、これが失敗すると、ログ出力をコンソールに書き込むことができますが、ファイルへのロギングは使用できなくなります。 – user489041
私は、あなたのクラスが使用不可能な状態にあった場合、クラスローダー(またはそれらの行に沿ったもの)によってロード可能でない可能性があり、あらゆる種類の問題を引き起こしていました。 *すべての 'static final'変数は、関係なく初期化されるべきであることを覚えておいてください。 –