背景无论是在工作中还是在面试中,异常还是很重要的。作为Java开发者,学习如何处理异常,哪些异常必须自己处理,哪些异常可以抛出等等,都是必须的。生活总是有意想不到的惊喜和意外,我们的代码也一样。如果你不明白,佛也不能加持你。今天我们就来聊一聊Java异常的话题。我们可以将Throwable视为Java异常的根类(祖先)。由于实现类太多,下面大致列出几个常用的实现类。错误:表示程序不必处理的系统级错误和异常。这是Java运行环境中的内部错误或硬件问题。例如:内存资源不足等。对于这种错误,程序基本无能为力,只好退出运行,这是Java虚拟机抛出的。Exception:表示需要捕获或者需要程序处理的异常。它处理由程序设计缺陷引起的问题或外部输入引起的一般问题,这些问题必须由程序处理。异常分为运行时异常和检查异常。RuntimeException(运行时异常)表示无法让程序恢复的异常。原因一般是因为执行了错误的操作,建议终止逻辑。因此,编译器不会检查这些异常。CheckedException(已检查异常)是表示程序可以处理的异常,即表示程序可以修复(程序本身接受异常并进行处理),因此称为已检查异常。处理Checked异常有两种方式:当前方法明确知道如何处理异常,程序应该使用try--catch代码块来捕获异常,然后在对应的catch模块中修复异常。当前方法不知道如何处理这个异常,应该在方法定义的时候声明异常。Throwable类的常用方法?getMessage()方法:发生异常时返回详细信息。getCause()方法:获取引发当前Throwable异常的Throwable异常。getStackTrace()方法:获取Throwable对象封装的异常信息。printStackTrace()方法:在控制台打印。请列出5个常见的运行时异常?NullPointerExceptionIndexOutOfBoundsExceptionClassCastExceptionArrayStoreExceptionBufferOverflowException异常处理的关键字有哪些?抛出异常:throw、throws捕获异常:try、catch、finallythrow和throwsthrows的区别?throw,用于显示在程序中正式抛出一个异常实例。throws,用于指示此方法中未处理的异常。每个方法都必须明确指出不处理哪些异常,以便方法的调用者可以防止可能发生的异常。最后,多个异常用逗号分隔。异常处理中finally语句块的重要性?不管程序中是否发生异常,都会执行finally语句块,即使没有catch语句但抛出异常,也会执行finally语句块。finally语句块通常用于释放资源,如I/O缓冲区、数据库连接、释放锁等。异常使用方法异常处理规则如何自定义异常?除了JDK定义的异常类,我们在开发过程中还可以根据业务异常自定义异常类。用户定义的异常应该继承自Exception基类。如果用户想自定义Runtime异常,应该继承RuntimeException基类。定义异常时,通常有两种构造方法:无参构造方法有一个参数构造方法,参数是一个字符串,这个字符串作为异常信息的描述,即返回值getMessage()方法(例如:“用户密码错误”、“xx接口返回参数为空”等)。不过在项目中可能就没那么简单了,可能又要打包了。但是基本上有两个参数:code+msg;code:主要是对业务中的异常进行分类,结合Httpcode来定义。msg:主要是业务异常的信息提示。你项目中的自定义异常类是怎么封装的?不知道的就回过头去看看自己项目中自定义异常类是怎么写的,学习与实践相结合。小结本文包含以下五点内容:Java中异常的分类常见异常的相关关键字有哪些异常处理规则的使用方法异常的自定义方法看下方二维码。转载本文请联系Java后端技术全栈公众号。
