Java中异常处理的示例

在这里,我们将分析一些异常处理" title="异常处理">异常处理代码,以更好地理解这些概念。

尝试在以下代码中查找错误(如果有)

代码1:

public class prog {

    public static void main(String arg[]) {

        try {

            int a = 10, b = 0;

            int c = a / b;

        } catch (RuntimeException e) {

            System.out.println(e.getMessage());

        } catch (ArithmeticException e) {

            System.out.println(e.getMessage());

        }

    }

}

输出结果

/prog.java:8: error: exception ArithmeticException has already been caught

        } catch (ArithmeticException e) {

          ^

1 error

说明:

当使用多个catch块时,我们必须确保以与异常继承相反的顺序捕获异常。这意味着必须在最一般的例外之前捕获最特定的例外。必须在RuntimeException之前捕获ArithmeticException。


代码2:

public class prog {

    public static void main(String arg[]) {

        try {

            throw new Integer(25);

        } catch (Exception e) {

            System.out.println(e.getMessage());

        }

    }

}

输出结果

/prog.java:4: error: incompatible types: Integer cannot be converted to Throwable

            throw new Integer(25);

            ^

Note: /prog.java uses or overrides a deprecated API.

Note: Recompile with -Xlint:deprecation for details.

1 error

说明:

我们只能抛出Throwable类或继承该类的类的对象。Integer类不会扩展Throwable类,因此,我们不能抛出Integer类的对象。类似地,“ throw 25”的陈述是错误的。不像C ++,我们可以抛出对象,而在Java中,我们只能抛出那些继承Throwable类的对象。


代码3:

public class prog {

    public static void main(String arg[]) {

        err ob1 = new err();

        ob1.func();

    }

}

class err {

    void func() {

        try {

            System.out.println("Inside try");

        } finally {

            System.out.println("Inside finally");

        }

    }

}

输出结果

Inside try

Inside finally

说明:

不必将catch块附加到try块。try语句可以直接与finally语句关联。


代码4:

import java.io.*;

public class prog {

    public static void main(String arg[]) {

        err ob1 = new err();

        ob1.func();

    }

}

class err {

    void func() throws IOException {

        try {

            System.out.println("Inside try");

        } catch (Exception e) {

            System.out.println("Inside catch");

        } finally {

            System.out.println("Inside finally");

        }

    }

}

输出结果

/prog.java:6: error: unreported exception IOException; must be caught or declared to be thrown

        ob1.func();

                ^

1 error

说明:

如果说一个函数抛出任何检查的异常,则调用者必须捕获该检查的异常。语句“ void func()throws IOException ”清楚地表明,该函数可以抛出必须由调用方处理的IOException。可以通过在try-catch块中包含' ob1.func() '语句来纠正该错误。


代码5:

import java.io.*;

public class prog {

    public static void main(String arg[]) {

        err ob1 = new err();

        ob1.func();

    }

}

class err {

    void func() throws RuntimeException {

        try {

            System.out.println("Inside try");

            try {

                int[] a = new int[10];

                int c = 10;

                a[c] = 0;

            }

        } catch (Exception e) {

            System.out.println("Inside catch");

        }

    }

}

输出结果

/prog.java:14: error: 'try' without 'catch', 'finally' or resource declarations

            try {

            ^

1 error

说明:

每个try块必须具有关联的catch或finally块。在代码中,内部try块没有关联的catch或finally块。


以上是 Java中异常处理的示例 的全部内容, 来源链接: utcz.com/z/350144.html

回到顶部