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

你可能感兴趣的文章
oracle12安装软件后安装数据库,然后需要自己配置监听
查看>>
Oracle——08PL/SQL简介,基本程序结构和语句
查看>>
Oracle——distinct的用法
查看>>
Oracle、MySQL、SQL Server架构大对比
查看>>
oracle下的OVER(PARTITION BY)函数介绍
查看>>
Oracle中DATE数据相减问题
查看>>
Oracle中merge into的使用
查看>>
oracle中sql查询上月、本月、上周、本周、昨天、今天的数据!
查看>>
oracle中sql的case语句运用--根据不同条件去排序!
查看>>
Oracle中Transate函数的使用
查看>>
oracle中关于日期问题的汇总!
查看>>
Oracle中常用的语句
查看>>
Oracle中序列的操作以及使用前对序列的初始化
查看>>
oracle中新建用户和赋予权限
查看>>
Oracle中的NVL,NVL2,NULLIF以及COALESCE函数使用
查看>>
Oracle中的rownum 和rowid的用法和区别
查看>>
oracle中的大小写、字符、dual、数字、处理、日期、函数、显/隐式、时间、条件表达式case、decode、to_date、to_char、sysdate
查看>>
oracle中表和视图的区别,oracle中常用表和视图
查看>>
oracle之表空间(tablespace)、方案(schema)、段(segment)、区(extent)、块(block)
查看>>
Oracle从11g导出后导入10g
查看>>