博客
关于我
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/

你可能感兴趣的文章
MySQL8修改密码的方法
查看>>
Mysql8在Centos上安装后忘记root密码如何重新设置
查看>>
Mysql8在Windows上离线安装时忘记root密码
查看>>
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
查看>>
mysql8的安装与卸载
查看>>
MySQL8,体验不一样的安装方式!
查看>>
MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
查看>>
Mysql: 对换(替换)两条记录的同一个字段值
查看>>
mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
查看>>
MYSQL:基础——3N范式的表结构设计
查看>>
MYSQL:基础——触发器
查看>>
Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
查看>>
mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
查看>>
mysqldump 参数--lock-tables浅析
查看>>
mysqldump 导出中文乱码
查看>>
mysqldump 导出数据库中每张表的前n条
查看>>
mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
查看>>
Mysqldump参数大全(参数来源于mysql5.5.19源码)
查看>>
mysqldump备份时忽略某些表
查看>>
mysqldump实现数据备份及灾难恢复
查看>>