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

你可能感兴趣的文章
mysql中json_extract的使用方法
查看>>
mysql中json_extract的使用方法
查看>>
mysql中kill掉所有锁表的进程
查看>>
mysql中like % %模糊查询
查看>>
MySql中mvcc学习记录
查看>>
mysql中null和空字符串的区别与问题!
查看>>
MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
查看>>
MYSQL中TINYINT的取值范围
查看>>
MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
查看>>
Mysql中varchar类型数字排序不对踩坑记录
查看>>
MySQL中一条SQL语句到底是如何执行的呢?
查看>>
MySQL中你必须知道的10件事,1.5万字!
查看>>
MySQL中使用IN()查询到底走不走索引?
查看>>
Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
查看>>
MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
查看>>
mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
查看>>
mysql中出现Unit mysql.service could not be found 的解决方法
查看>>
mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
查看>>
Mysql中各类锁的机制图文详细解析(全)
查看>>
MySQL中地理位置数据扩展geometry的使用心得
查看>>