java异常

网友投稿 212 2022-11-18

java异常

文章目录

​​异常的定义​​​​异常的分类​​​​举例​​

​​1.NullPointerException​​​​2.ArrayIndexOutOfBoundsException​​​​3.StringIndexOutOfBoundsException​​​​4.ClassCastException​​​​5.NumberFormatException​​​​6.InputMismatchException​​​​7.ArithmaticException​​​​8.FileNotFountException​​

​​异常处理​​

异常的定义

异常就是有异于常态,和正常情况不一样,有错误出现。在java中,阻止当前方法或作用域的情况,称之为异常。

异常的分类

Exception::程序本身可以捕获并且可以处理的异常。

运行时异常(不受检异常):RuntimeException类极其子类表示JVM在运行期间可能出现的错误。编译器不会检查此类异常,并且不要求处理异常,比如用空值对象的引用(NullPointerException)、数组下标越界(ArrayIndexOutBoundException)。此类异常属于不可查异常,一般是由程序逻辑错误引起的,在程序中可以选择捕获处理,也可以不处理。

非运行时异常(受检异常):Exception中除RuntimeException极其子类之外的异常。编译器会检查此类异常,如果程序中出现此类异常,比如说IOException,必须对该异常进行处理,要么使用try-catch捕获,要么使用throws语句抛出,否则编译不通过。

throwable |Errow |Exception |checked(编译时异常) |IOException |FileNotFountException |ClassNotFountException |unchecked(运行时异常)RuntimeException |NullPointerException |ArrayIndexOutOfBoundsException |ClassCastException |NumberFormatException |InputMismatchException |ArithmaticException

举例

1.NullPointerException

空指针异常

public class ExceptionDemo01 { //NullPointerException @Test public void test1() { int[] arr = null; System.out.println(arr[4]); }}

2.ArrayIndexOutOfBoundsException

数组角标越界

@Test public void test2() { int[] arr = new int[10]; System.out.println(arr[10]); }

3.StringIndexOutOfBoundsException

字符串角标越界异常

@Test public void test3() { String s1 = "abc"; System.out.println(s1.charAt(3)); }

4.ClassCastException

类型转换异常 本来为向下转型,然后String和Date无关系,所以转不了

@Test public void test4() { Object o1 = new Date(); String s1 = (String)o1; }

5.NumberFormatException

@Test public void test5() { String s1 = "abc"; int i1 = Integer.parseInt(s1); }

6.InputMismatchException

输出异常

@Test public void test6() { Scanner s1 = new Scanner(System.in); int score = s1.nextInt(); System.out.println(s1); }

7.ArithmaticException

算术异常

@Test public void test7() { int a = 0; int b = 1; System.out.println(b/a); }

8.FileNotFountException

编译时异常 编译器都编译不了 javac.exe都不可以运行

异常处理

使用格式:

修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2 ... { }

import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.InputStream; public class DemoThrows { public static void main(String[] args) throws FileNotFoundException{ readFile(); } public static void readFile() throws FileNotFoundException { InputStream is = new FileInputStream("E:/iodemo/ch01.txt"); }}

2.try代码块

try { ... //监视代码执行过程,一旦返现异常则直接跳转至catch, // 如果没有异常则直接跳转至finally} catch (SomeException e) { ... //可选执行的代码块,如果没有任何异常发生则不会执行; //如果发现异常则进行处理或向上抛出。} finally { ... //必选执行的代码块,不管是否有异常发生, // 即使发生内存溢出异常也会执行,通常用于处理善后清理工作。}

import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.InputStream; public class DemoTryCatch { public static void main(String[] args) { //捕获异常 try { //可能产生异常的代码 readFile(); } catch (FileNotFoundException e) { //异常的处理逻辑,将异常记录日志,异常封装后显示 System.out.println("系统找不到指定的路径"); } System.out.println("后续代码"); } public static void readFile() throws FileNotFoundException { InputStream is = new FileInputStream("E:/iodemo/ch01.txt"); }}

3.自定义异常

除了JDK定义好的异常类外,在开发过程中根据业务的异常情况自定义异常类。

package com.example.springbootmybatis;

/*** 自定义异常类* 用户不存在异常信息类*/public class UserNotExistsException extends RuntimeException{ static final long serialVersionUID = -7034897190745766939L; public UserNotExistsException() { super(); } public UserNotExistsException(String message) { super(message); }}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Hadoop_sbin概述
下一篇:Java NIO Buffer实现原理详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~