博客
关于我
Java 异常
阅读量:741 次
发布时间:2019-03-21

本文共 1699 字,大约阅读时间需要 5 分钟。

异常处理(Java)

程序在运行过程中出现异常是不可避免的,作为开发者,我们应当学会正确处理这些异常,以确保程序的稳定性和用户体验。以下是关于Java异常处理的详细指南。


异常概述

异常是程序在运行过程中由于某些错误或外部条件导致的一些状况。尽管我们都渴望写出无错误的代码,但现实是任何程序都可能遇到问题。例如,用户可能由于操作失误或系统错误而导致数据丢失,这会严重影响程序的可用性。因此,正确处理异常至关重要。

异常分类:

  • Error: 系统级错误,通常由系统处理,开发者无需特别捕获。
  • Exception: 可处理的异常,可以通过try-catch块进行捕获。
  • RuntimeException: 可捕获的异常,可能是代码逻辑错误。
  • 继承自Exception的其他异常: 需要捕获,通常在方法文档中说明。

运行时异常(RuntimeException):

  • 类型转换错误
  • 数组越界访问
  • null指针访问
  • 算术异常

非运行时异常(Checked Exception):

  • 打开不存在的文件
  • 寻找非-existent类
  • 文件操作异常

异常抛出

当程序运行中出现错误时,抛出异常是一个有效的处理方式。

使用throw抛出异常

public class ThrowTest {    public static void main(String[] args) {        Integer a = 1;        Integer b = null;        if (a == null || b == null) {            throw new NullPointerException();        } else {            System.out.println(a + b);        }    }}

使用throws声明异常

import java.io.FileInputStream;import java.io.FileNotFoundException;public class ThrowsTest {    public static void main(String[] args) throws FileNotFoundException {        throwsTest();    }    public static void throwsTest() throws FileNotFoundException {        new FileInputStream("/home/project/d.file");    }}

捕获异常

捕获异常可以通过try-catch-finally块实现。

###基本语法

try {    // 可能抛出异常的代码块} catch (异常类型1 ex1) {    // 异常处理逻辑} catch (异常类型2 ex2) {    // 异常处理逻辑} finally {    // 一定执行的逻辑}

try块是捕获异常的必备,catch和finally是可选项。


自定义异常

在实际开发中,我们可能会遇到未知的异常,这时自定义异常类是有必要的。

public class MyAriException extends ArithmeticException {    public MyAriException() {        super("默认信息");    }        public MyAriException(String msg) {        super(msg);    }}

使用自定义异常时,确保在调试时能提供详细信息。


异常堆栈

当异常抛出时,Java会生成一个异常堆栈。打开.idea目录下的logcat工具,可以查看并分析堆栈信息。


通过理解和正确处理异常,我们可以显著提升程序的鲁棒性,避免让用户因小错误而放弃使用我们的程序。在编写代码时,记得合理声明异常并搭配try-catch-finally处理,确保程序的健壮性。

转载地址:http://gcpgz.baihongyu.com/

你可能感兴趣的文章
onCreate()方法中的参数Bundle savedInstanceState 的意义用法
查看>>
OneBlog Shiro 反序列化漏洞复现
查看>>
one_day_one--mkdir
查看>>
ONI文件生成与读取
查看>>
onlyoffice新版5.1.2版解决中文汉字输入重复等问题
查看>>
oobbs开发手记
查看>>
OPEN CASCADE Curve Continuity
查看>>
Open Graph Protocol(开放内容协议)
查看>>
Open vSwitch实验常用命令
查看>>
Open WebUI 忘了登入密码怎么办?
查看>>
open-vm-tools-dkms : 依赖: open-vm-tools (>= 2:9.4.0-1280544-5ubuntu3) 但是它将不会被安装
查看>>
Openbox-桌面图标设置
查看>>
opencart出现no such file or dictionary
查看>>
opencv Mat push_back
查看>>
opencv waitKey() 函数理解及应用
查看>>
OpenCV 中的图像转换
查看>>
OpenCV 在 Linux 上的 python 与 anaconda 无法正常工作.收到未实现 cv2.imshow() 的错误
查看>>
Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)上
查看>>
opencv 模板匹配, 已解决模板过大程序不工作的bug
查看>>
opencv&Python——多种边缘检测
查看>>