Java异常

Java异常是一种处理程序错误的机制,分为Exception和Error。Exception是可处理的异常,如数组越界,而Error通常指系统级错误。Java使用try-catch-finally语句块进行异常捕获和处理,允许在方法声明处使用throws关键字表明可能抛出的异常。此外,程序员还可以自定义异常类来标记特定的业务逻辑错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java异常是Java一种机制,程序执行不正常的情况被称为异常,;异常分为两种 Expection 和 Error

Exception : 可被解决的异常,常见的有数组越界 网络中断 试图读取不存在的文件

public class ExcptionTest {
public void test(){
System.out.println( "====运行前====" );
int a=10/0;
System.out.println( "====运行后====" );
}
public static void main(String[] args) {
ExcptionTest et= new ExcptionTest();
et.test();
}
}

运行结果就是运行时异常 可以通过try catch 进行捕获java.lang.ArithmeticException: / by zero

还有一种是编译时异常IOException,除了运行时异常 剩下的都是编译时异常

Java编程语言使用异常处理机制为程序提供了错误处理的能力。

在我们认为会有异常发生的代码上,我们可以加上语句来捕获并处理错误:

        try{ 

             }catch{

                       }final{

                                 }

try:在这个代码块中任何一句语句发生了异常,该语句以及下面的语句都不会继续执行(不要随意将代码放进try代码块中),程序将跳转到catch代码块中来处理异常。

catch:把抓获的异常匹配类型,保证程序能继续执行下去。try后可以跟多个catch语句,但前一个catch语句的异常类要从子类到父类写,否则会出现编译错误。

 final:该代码块里的程序一定会执行。一个try只能有一个final。

import java.io.UnsupportedEncodingException;
 
public class Demo4 {
 
    /*
    关键字 throws
    throws在方法的参数列表后面声明此方法可能会出现异常,表示此方法不处理异常,交给方法调用处去处理
    调用此方法时,在调用处根据情况对异常是否进行处理
    运行时异常:继承了RuntimeException,在编译时,可以对异常不强制处理
    编译期异常:没有继承RuntimeException,在编译时,必须对异常进行处理
     */
 

    public static void main(String[] args) {
        try {
            test1();  //main是最顶层,不能再抛出,再抛就是虚拟机了;在最顶层需要对异常try catch处理
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
 
    public static void test1() throws UnsupportedEncodingException {
        test2();
        System.out.println("test 1");
    }
 
    public static void test2() throws UnsupportedEncodingException {
        "abc".getBytes("utf-8");//使用throws声明,向上抛出异常,可以不用处理getBytes()可能出现的异常
        System.out.println("test 2");
    }
}

自定义异常:

import java.io.UnsupportedEncodingException;
 
public class Demo5 {
        /*
        throw:在方法体内使用,作用是抛出一个异常对象,抛出后程序不继续向下进行
              一般在方法中不符合逻辑业务要求时,可以主动使用throw抛出异常
        throws:在方法声明处使用,声明该方法可能会出现的异常,不强制进行处理
        自定义异常:可以自定义类库中没有的异常,用自定义异常标记业务逻辑异常,避免与标准异常混淆
         */
        public static void main(String[] args) {
            try {
                String a=null;
                ("ABC").getBytes(a);
                throw new UnsupportedOperationException();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            System.out.println("Demo5");
        }
 
        public static void test(int score) throws ScoreException {
            if (score<0&&score>20){
                throw new ScoreException("数字不符合要求");
                //主动的抛出异常,下面语句不在运行
            }
            if (score>0&&score<10){
                System.out.println("5");
            }
            if (score>10&&score<20){
                System.out.println("25");
            }
        }
}
 
public class ScoreException extends Exception{
    //自定义异常部分
    public ScoreException() {
    }
 
    public ScoreException(String message) {
        super(message);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值