c语言sscanf函数的用法是什么
212
2022-11-18
java异常
文章目录
异常的定义异常的分类举例
1.NullPointerException2.ArrayIndexOutOfBoundsException3.StringIndexOutOfBoundsException4.ClassCastException5.NumberFormatException6.InputMismatchException7.ArithmaticException8.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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~