[解決済み】報告されない例外 java.lang.Exception; キャッチするか、投げるように宣言しなければならない 【重複
2021-12-30 23:09:39
質問
以下のようなコードです。
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Test{
public static void main(String args[]){
byte[] k1 = parseHexString("eb35a6c92c3b8c98033d739969fcc1f5ee08549e", 20);
byte[] k2 = parseHexString("57cb8b13a1f654de21104c551c13d8820b4d6de3", 20);
byte[] k3 = parseHexString("c4c4df2f8ad3683677f9667d789f94c7cffb5f39", 20);
System.out.println(k1);
System.out.println(k2);
System.out.println(k3);
System.out.println(xor(m16h(add(xor(xor(m16h(add(k1, m16h(add(k2, m16h(k3))))), k3), k2), k1)), k3));
}
public static byte[] m16h(byte[] m) throws Exception {
return parseHexString(SHA1(m), 20);
}
private static byte[] xor(byte[] x, byte[] y) {
int l = x.length;
if (l != y.length) {
return null;
}
byte[] ob = new byte[l];
for (int i = 0; i < l; i++) {
ob[i] = (byte) (x[i] ^ y[i]);
}
return ob;
}
public static byte[] parseHexString(String x, int len) {
byte[] ret = new byte[len];
for (int i = 0; i < len; i++) {
ret[i] = (byte) Integer.parseInt(x.substring(i * 2, (i * 2) + 2), 16);
}
return ret;
}
public static byte[] add(byte[] x, byte[] y) {
byte[] added = new byte[(x.length + y.length)];
System.arraycopy(x, 0, added, 0, x.length);
System.arraycopy(y, 0, added, x.length, y.length);
return added;
}
public static String SHA1(byte[] c) throws NoSuchAlgorithmException {
return base16encode(MessageDigest.getInstance("SHA-1").digest(c));
}
public static String base16encode(byte[] data) {
String res = "";
for (byte b : data) {
res = String.format("%s%02x", new Object[]{res, Byte.valueOf(b)});
}
return res;
}
}
コンパイルすると、m16h(x)のあたりでエラーになります。
Line: 16
unreported exception java.lang.Exception; must be caught or declared to be thrown
解決方法は?
public static byte[] m16h(byte[] m) throws Exception
このメソッドのシグネチャは、Exceptionがスローされる可能性があることを示しています。
これは、その例外が :
-
呼び出し元で処理する必要がある
try { System.out.println(xor(m16h(add(xor(xor(m16h(add(k1, m16h(add(k2, m16h(k3))))), k3), k2), k1)), k3)); } catch (Exception e) { e.printStackTrace(); }
-
呼び出し側で再投入する必要があります。
public static void main(String[] args) throws Exception
関連
-
複数のサイトをまとめてよく見たい オススメ度
-
[解決済み】C++ -- ' の前に一次式があることが予想される。
-
[解決済み】主成分分析:colMeans(x, na.rm = TRUE)のエラー:'x'は数値でなければなりません。
-
[解決済み】データフレームで関数を適用する場合、dim(X)は正の長さでなければならない
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み】二重の空きや破損(fasttop)
-
[解決済み】C#でクエスチョンマークを2つ並べるとどんな意味になるのか?
-
[解決済み】スレッド "main "での例外 java.util.NoSuchElementException: 行が見つかりません [重複]。
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み】catchブロックの中で投げられた例外は、再度キャッチされますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
非常に詳細な2つのシェルコードの例
-
複数のサイトをまとめてよく見たい オススメ度
-
[解決済み] 式は変更可能なlvalueでなければならない
-
[解決済み】以下の追跡されていないワーキングツリーファイルは、マージによって上書きされますが、私は気にしません。
-
[解決済み】lm.fit(x,y,offset = offset, singular.ok,...) boxcox式で0非NAケースでエラーになる。
-
[解決済み】 munmap_chunk(): 無効なポインタ
-
[解決済み] '\r': コマンドが見つかりません - .bashrc / .bash_profile [重複].
-
[解決済み】C++の<map>に相当するC#は何ですか?[重複しています]
-
[解決済み】rmarkdownエラー "長さ0の変数名を使おうとした"
-
[解決済み】データフレームで関数を適用する場合、dim(X)は正の長さでなければならない