Java异常

Java异常

在我们编程的过程中,经常会碰到异常。比如强制转换时,不对其进行说明,就会出现异常。

示例
public class Test {
    public static void main(String[] args) {
        int a = 128;
        byte b = a;
        System.out.println("b = " + b);
    }
}
运行结果

1651399891939.png

程序异常一旦发生,程序中对其进行处理,那么整个程序就会停止运行,出现异常的语句的后面的语句将不会被执行。这样显然时不好的。因此,我们就可以通过一些异常处理语句来进行处理,让程序能够正常运行。一般处理异常的方法有两种:捕获和抛出。

异常的捕获与处理

异常的捕获与处理一般由 try-catch-finally 语句来实现。关于 try / catch 关键字的用法,之前的文章中就已经提到过了。传送门: try 和 catch 关键字

总结一下就是,我们可以将我们认为有可能有异常的语句放在 try 中尝试执行,如果语句有异常,则 try 中异常语句之后的所以语句都将不会被执行,转而执行 catch 中的语句;如果没有异常,就执行完 try 中的所有语句,而不去执行 catch 中的语句。不论是否有异常,只要有 finally 语句,都会执行 finally 语句。

异常的抛出

如果当前方法无法处理捕获的异常,就可以用 throws 声明将此异常抛出,交给上一个调用此方法的方法。如果还是无法处理,也可以继续抛出,直到将其处理或者最终交给JVM。而异常抛到JVM时,程序就会停止运行。

throws 关键字的用法: throws 异常类的类名

比如 private static void exceptionTest() throws Exception { }

当我们自己定义的异常需要抛出时,我们就必须使用 throw 关键字。throw 抛出的时异常对象而不是异常类,并且每次只能抛出一个异常对象。一旦 throw 语句被执行,其后的所有语句都不会被执行。

示例
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Test t = new Test();
        Scanner in = new Scanner(System.in);
        System.out.println("输入数字");
        int num = in.nextInt();
        try {
            t.regist(num);
        }
        catch (RegisterException e) {
            e.printStackTrace();
        }
    }

    public void regist(int num) throws RegisterException {
        if(num < 0)
            throw new RegisterException("值为负值,不合理");
        else
            System.out.println("值为: " + num);
    }

    class RegisterException extends Exception {
            public RegisterException() {

            }
            public RegisterException (String str) {
                super(str);
            }
    }
}

1651405078286.png
1651405115757.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值