首页 > 编程语言 >java异常笔记

java异常笔记

时间:2022-09-20 20:36:33浏览次数:65  
标签:java int System 笔记 println 异常 public out

为什么会有异常

计算机不是万能的,程序猿也不是万能的,总会犯错误。

比如当我们编译时报错,或者代码能跑后出现数组越界

这就会出现异常;

异常有几种

两种,一种是编译时异常,另一种是运行时异常。

由图可见,所有的异常都继承自Throwable

编译时异常

受控异常,编译时就能看到

比如代码中的分号写成中文。

运行时异常

不受控异常,运行时才能看到

常见异常:

算数异常 数组越界异常 空指针异常

怎么用

try...catch...finally

int[] arr = {1, 2, 3};
try {
    System.out.println("before");
    arr = null;
    System.out.println(arr[100]);
    System.out.println("after");
} catch (Exception e) {
    e.printStackTrace();
} finally {
    System.out.println("finally code");
}

运行结果

抛出异常throws

public static void main(String[] args) { 
 System.out.println(divide(10, 0)); 
} 
public static int divide(int x, int y) { 
 if (y == 0) { 
 throw new ArithmeticException("抛出除 0 异常"); 
 } 
 return x / y; 
} 
// 执行结果
Exception in thread "main" java.lang.ArithmeticException: 抛出除 0 异常
 at demo02.Test.divide(Test.java:14) 
 at demo02.Test.main(Test.java:9)

我们可以使用 throws 关键字, 把可能抛出的异常显式的标注在方法定义的位置. 从而提醒调用者要注意捕获这些异常.

public static int divide(int x, int y) throws ArithmeticException { 
 if (y == 0) { 
 throw new ArithmeticException("抛出除 0 异常"); 
 } 
 return x / y; 
}

自定义异常

package org.example.excep;

public class MyException extends RuntimeException{
    public MyException(){
        super();
    }
    public MyException(String message){
        super(message);
    }

}
package org.example.excep;

import java.util.Scanner;

public class Testthrows {
    public static void main(String[] args)throws MyException{
        Scanner cin = new Scanner(System.in);
        int a = cin.nextInt();
        if(a==0){
            throw new MyException("this is a test");
        }
        System.out.println("after"); //不会执行!!!
    }
}

标签:java,int,System,笔记,println,异常,public,out
From: https://www.cnblogs.com/xss9/p/16712371.html

相关文章

  • JavalearnDay02
    变量表达式相关概念:(一)常量​ 概念:常量,在程序中运行过程中,值不能发生改变的量(数值).(二)计算机存储单元计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为......
  • 2022-08-30 第二小组 张鑫 学习笔记
    实训五十二天Servlet学习内容HttpServletRequest//请求  所有和请求相关的操作  当请求来的时候,request就被实例化HttpServletResponse//响应  所有和......
  • Day04笔记
    01.explicit的作用(了解)classMaker{public: //explicit只能放在构造函数前面,构造函数只有一个参数或其他参数有默认值时 explicitMaker(intn)//防止编译器优化Mak......
  • C# 各类常见Exception 异常信息
    Exception:所有异常对象的基类。SystemException:运行时产生的所有错误的基类。IndexOutOfRangeException:当一个数组的下标超出范围时运行时引发。Null......
  • java BigDecimal加减乘除 与 保留两位小数
    (29条消息)javaBigDecimal加减乘除与保留两位小数_weixin_33834137的博客-CSDN博客  BigDecimalbignum1=newBigDecimal("10");BigDecimalbignum2=new......
  • Java基础06 变量、常量、作用域
    变量变量是什么:就是可以变化的量!◆Java是-种强类型语言,每个变量都必须声明其类型。◆Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。typeva......
  • javascript的导入和导出
    单个导出: 注意export的写法,不需要export.a才可以导出,只需要在声明之前加上export关键字即可多个导出:  导出默认:注意一个js文件中只能有一个导出默认   导入......
  • Java中字符串、数组、集合及JSONArray的长度属性
    前言:数组没有length()这个方法,有length的属性。String有有length()这个方法。1.String字符串Stringstr="abcdefg";str.length(); 2.Array数组int[]arr=newint......
  • java Thread.sleep(0) 有什么用
     RocketMQ 中出现 org.apache.rocketmq.store.logfile.DefaultMappedFile#warmMappedFile 作用的交出cpu控制权,在unix中使用是时间片算法,而在windows中是抢占式......
  • javascript的API和跨域问题
    document.getElementById(),根据ID来精确查找元素document.querySelectorAll(),根据选择器来查找,返回一个或者多个元素document.querySelector(),根据选择器来查找,同类多个......