-4
public class ApplicationException extends Exception
{
    private static final long serialVersionUID = 1L;

    public ApplicationException()
    {
        素晴らしい();
    }

    public ApplicationException(文字列メッセージ)
    {
        スーパー(メッセージ);
    }
}

public クラス ユーティリティ
{
    public static byte[] ParseHehadecimalString(String s) // エラー 1
    {
        throw new ApplicationException("ParseHehadecimalString は実装されていません");
    }
}

public class Client extends Activity {
{
    public void OnBtnSendClick(View v)
    {
        文字列 s = et_client_out.getText().toString();
        バイト[] バイト;

        試す
        {
            バイト = Utilities.ParseHehadecimalString(s);
        }
        catch(ApplicationException ex) // エラー 2
        {
            Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_SHORT).show();
            戻る;
       }
}

エラー 1: 未処理の例外の種類 ApplicationException

エラー 2: ApplicationException のキャッチ ブロックに到達できません。この例外は、try ステートメント本体からスローされることはありません

これはどのように修正できますか?

4

5 に答える 5

2

エラー1は次のようにする必要があります

public static byte[] ParseHehadecimalString(String s) throws ApplicationException {

エラー 2 は、エラー 1 のためにこの例外を通過しません。エラー 1 が修正されると、エラー 2 は消えます。

このリンクでは、メソッド シグネチャに例外を追加する方法について説明しています。

于 2012-10-01T08:14:05.557 に答える
2

Declare メソッドが例外をスローします。ここに素敵なリンクがあります

public static byte[] ParseHehadecimalString(String s)  throws ApplicationException
于 2012-10-01T08:14:17.390 に答える
2

試す

public static byte[] ParseHehadecimalString(String s) throws ApplicationException

このようにして、メソッドがその例外をスローできることを宣言します。

于 2012-10-01T08:14:29.940 に答える
2

メソッドが ApplicationException をスローすることを宣言するのを忘れていました。

public static byte[] ParseHehadecimalString(String s) throws ApplicationException

そのようなエラーをすぐに指摘するEclipseのような IDE の使用を検討することをお勧めします。

于 2012-10-01T08:14:47.717 に答える
2

Java には、チェックされた例外とチェックされていない例外があります。あなたの例外は Exception から拡張されているため、チェックされた例外です。非チェック例外は、RuntimeException から拡張されます。

メソッドヘッダーでチェック例外を宣言する必要があります。これにより、メソッドがこの例外をスローする可能性があることがコンパイラーに認識されます。これを行っていないため、コンパイラはメソッドがこの例外をスローできないと判断します。チェックされていない例外は、メソッド ヘッダーで宣言せずにスローされる場合があります。

于 2012-10-01T08:17:03.993 に答える