异常处理

我们在使用Java语言高级API进行程序设计之前,我们还需要理解Java语言中另一个基础特色-----异常处理

异常(Exception)是程序在执行过程中所产生的问题。导致异常产生的原因有很多种:

用户输入了无效的数据、找不到一个需要打开的文件、在通讯过程中网络连接断开或者JVM发生了内存溢出

异常的分类:

检查异常-----是用户错误或不能被程序所遇见的问题

运行时异常-----是一个程序在运行过程可能发生的问题

错误-------实际上,错误根本不是异常,但却是用户或程序所无法控制的问题

异常与错误区别:

错误(Error)

  1. 语法错误:最低级的错误---编译期报错,修改为正确的语法
  2. 逻辑错误:编译不报错,运行也不报错,但结果不是我们需要的,往往是算法有问题—编译不报错
  3. 运行时错误:运行期发生错误—不能用代码挽回的,往往是硬件问题和运行环境问题,报错类型名字后面是Error,往往是硬件问题或环境问题,无法用异常处理机制解决

异常(Exception)

检查异常(编译异常CheckedException)--一个方法在声明部分书写了thorws Exception,表示这个方法有可能会抛出异常的,以至于调用者在调用时会受到警告,这种警告标示编译不通过,强制要求调用者对代码进行处理。

处理方法有两种:

一种是继续往上抛,但是不能抛向虚拟机。

一种是调用者用try—catch处理

throws---书写在方法声明的最后,后面跟的是异常类名,而且可以有多个类名(中间由逗号分隔);表明本方法有可能发生某个类型的异常

throw—书写在方法体,后面跟的是异常对象(只能跟一个对象);一旦执行到throw这句代码,就一定会发生异常

如果throw后面的异常对象是编译时异常,那么该方法声明后面必须加throws

如果throw后面的异常对象是运行时异常,那么该方法声明后面可以不加throws

运行时异常(未检查异常)--在运行期报错,报错类型名字后面是Exception,可以使用异常处理机制

运行时异常处理机制:

  1. 修改源代码,将异常情况避免掉(最好)
  2. 使用异常捕获机制try—catch—finally(不管是否发生异常,都必须要执行的代码)

Try(试运行){

正常情况下有可能发生异常的代码

}catch(捕获—异常的引用为异常代码变量

){

执行catch块当中的代码

}catch(Exception e){

e.printStackTrace();

}finally{

}

当Try后面有多个catch块时候,这多个catch块捕获异常有继承关系时必须遵照子类catch块写前面,父类catch块写后面

System.exit(0)—关闭虚拟机—这句代码才能终止finally

Final:用于修饰不变的,包括常量,终态类,不可重写的方法

Finally:异常捕获机制,不管是否发生异常,都必须要执行的代码

Finalize:销毁机制,GC调用

如果程序员主动抛出一个异常,需要使用throw异常对象

子类重写方法不能比父类被重写方法抛出更多异常,这里的更多指的是范围,而不是个数(异常是有继承关系)

Continue— 跳出循环,进入下一次循坏

Break— 结束这个循环

Return— 结束本方法,或者返回一个值

自定义异常

表示层:任务—做界面

业务层:任务—做业务

持久层:任务—操作数据访问

时间: 2024-12-22 06:28:05

异常处理的相关文章

<<ABP文档>> 异常处理

文档目录 本节内容: 简介 启用错误处理 非AJAX请求 显示异常 UserFriendlyException Error 模型 AJAX 请求 异常事件 简介 这个方法针对Asp.net Mvc和Web Api,如果你对Asp.net Core感兴趣,请看Asp.net Core文档. 在一个Web应用里,异常通常在Mvc控制器的Action或Web Api 控制器的Action里被处理,当一个异常姓时,应用的用户会通过某种方式收到错误信息和错误的可能原因. 如果一个错误发生在平常的HTTP请

<<ABP文档>> Mvc 控制器

文档目录 本节内容: 简介 AbpController基类 本地化 其它 过滤 异常处理和结果包装 审计日志 验证 授权 工作单元 反伪造 模型绑定器 简介 ABP通过nuget包Abp.Web.Mvc集成到Asp.net Mvc 控制器.你可以像往常那样创建普通的Mvc控制器,依赖注入可以对普通的Mvc控制器起作用,但你应当使你的控制继承自AbpController,它提供了许多好处和更好的集成到ABP. AbpController基类 这是一个简单的继承自AbpController的控制器:

<<ABP文档>> Web Api 控制器

文档目录 本节内容: 简介 AbpApiController 基类 本地化 其它 过滤 审计日志 授权 防伪造过滤 工作单元 结果包装和异常处理 结果缓存 验证 模块绑定器 简介 通过Abp.Web.Api的nuget包,把ABP集成到Asp.net Web Api 控制器里.你可以像之前做的一样创建平常的Asp.net Web Api控制器,依赖注入会很好地为这些平常的ApiController工作,但你要把你的控制器继承于AbpApiController,它提供了许多好处和更好地集成到ABP

ABP文档 - 对象与对象之间的映射

文档目录 本节内容: 简介 IObjectMapper 接口 集成 AutoMapper 安装 创建映射 自动映射的特性 自定义映射 扩展方法 MapTo 单元测试 预定义的映射 LocalizableString -> string 注入 IMapper 简介 把一个对象映射到另一个相似的对象很常见,两个对象(类)具有相似或相同的属性,它们之间要互相映射,其实这项工作重复且无聊,考虑一个典型的应用服务方法,如下: public class UserAppService : Applicatio

<<ABP文档>> 通知系统

文档目录 本节内容: 简介 发送模式 通知类型 通知数据 通知重要性 关于通知持久化 订阅通知 发布通知 用户通知管理器 实时通知 客户端 通知存储 通知定义 简介 通知用来告知用户系统里特定的事件发生了,ABP提供一个发布/订阅,它基于实时通知基础框架. 发送模式 有两种方式可以发送通知给用户: 用户订阅一个特定的通知类型,然后我们发布一个此类型的通知,它会分发给所有订阅的用户,这就是发布/订阅模式. 我们可以直接发送一个通知给目标用户(users). 通知类型 有两种通知类型: 一般通知:任

<<ABP文档>> 嵌入的资源文件

文档目录 本节内容: 简介 创建嵌入的文件 暴露嵌入的文件 使用嵌入的文件 简介 一个web应用里,客户端包含javascript,css,xml等文件,这此文件被添加到一个web项目后,发布成独立的文件,有时,我们需要把一些这样的文件打包入一个程序集(一个类库项目,一个Dll文件),并且作为嵌入式资源文件部署在这个程序集里,ABP提供了一个基础架构,方便地处理这件事. 创建嵌入的文件 我们首先要创建一个资源文件并把它标记为嵌入式资源,任何程序集都可以包含嵌入式资源文件,假设我们有一个名为“Ab

<<ABP文档>> 审计日志

文档目录 本节内容: 简介 关于 IAuditingStore 配置 通过特性启用/禁用 注意 简介 维基百科:“一个审计追踪(也叫审计日志)是一个安全相关的时序记录.记录组.和/或记录源和目标,作为任何时候一个特殊操作带来影响的一序列活动的书面文件”. ABP提供一个基础框架来自动记录所有与应用的交互,它能记录有意的方法调用和调用者信息与参数. 基本上,保存的字段有:相关的租户id,调用者id,被调用的服务名(被调用方法的类名),被调用的方法名,执行参数(序列化成Json),执行时间,执行时长

<<ABP文档 - 框架>> 1.4 启动配置

文档目录 本节内容: 配置ABP 替换内置服务 配置模块 为一个模块创建配置 ABP在启动时,提供基础框架和模型来配置和模块化. 配置ABP 在预初始化事件中进行配置,示例: public class SimpleTaskSystemModule : AbpModule { public override void PreInitialize() { //为你的应用添加语言 Configuration.Localization.Languages.Add(new LanguageInfo("en

<<ABP文档 - 框架>> 1.5 多租户

文档目录 本节内容: 什么是多租户 多部署 - 多数据库 单部署 - 多数据库 单部署 - 单数据库 单部署 - 混数据库 多部署 - 单/多/混 数据库 ABP中的多租户 启用多租户 宿主与租户 会话 数据过滤 IMustHaveTenant 接口 IMayHaveTenant 接口 补充提醒 在宿主与租户间切换 什么是多租户 维基百科:“软件多租户是一个软件架构,软件只有一个实例运行在服务器,并服务于多个租户.一个租户包含一组用户,他们拥有指定权限,共同访问一个软件实例.一个多租户架构,应用

<<ABP文档 - 框架>> 1.3 模块系统

文档目录 本节内容: 简介 模块定义 生命周期方法 PreInitialize(预初始化) Initialize(初始化) PostInitialize(提交初始化) Shutdown(关闭) 模块依赖 插件模块 Asp.net Core Asp.net Mvc,Web Api 插件中的控制器 附加程序集 自定义模块方法 模块配置 模块生命期 简介 ABP为创建模块及组织它们提供基础框架.一个模块可依赖于另一个模块.通常地,一个程序集做为一个模块.如果你的应用是多个程序集,建议为每个程序集定义一