热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Android自定义抛出异常的方法详解

这篇文章主要给大家介绍了关于Android自定义抛出异常的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

在android开发过程中,我们经常遇到异常的问题,崩溃抛出异常的时候,是非常令人烦闷的。但是异常有一个好处,使得app能在编译的时候给我们提供一些bug信息,有时可能比较模糊,有时可能很精准,甚至提示报错行。基于这一点,今天我们就来讲讲android中的异常吧。

今天要讲的内容:

  • throw 和 throws
  • 异常类型
  • 仿写异常及其好处

一. throw 和 throws

异常通常的处理方式有 throw/throws 以及 try-catch 两种。今天我们主要讲解throw/throws这一类的处理。

  • throw:抛出异常,一般是一个具体的异常。放置在方法体内,当代码执行此行并抛出一个具体的异常以后,此异常下面的逻辑代码均不会执行。
  • throws:抛出异常的声明,一般放在方法头,表示此方法的执行可能会引起某个异常,或某几个异常,throws 后面可以声明多个异常,如 :
public static void function1() throws Exception1, Exception2, Exception3{

}

而 throws引起的异常,一般由调用此方法的方法去处理。

二. 异常类型

java开发异常大致分为三种:

  • java.lang.Error
  • java.lang.Exception
  • java.lang.RuntimeException

这三个异常类都继承于他们的父类 Throwable,其中 Error 和 Exception是 Throwable 的两大子类。Error 一般是系统错误,我们不予讨论,一般我们程序出现bug都是属于Exception类,RuntimeException 是 Exception的一个子类。今天我要介绍的就是 RuntimeException 的几个常见子类。

2.1 java.lang.NullPointerException

空指针异常,一般是对象未创建或者不存在造成的。

2.2 ava.lang.ClassNotFoundException

类异常,一般是类不存在,排查的时候注意是不是类名称写错或者路径搞错了

2.3 java.lang.ArrayIndexOutOfBoundsException

下标越界异常,一般出现在数组或集合的操作过程中

2.4 java.lang.IllegalArgumentException

方法参数错误

2.5 java.lang.IllegalAccessException

没有访问权限,一般是类的权限访问出问题了

2.6 ArithmeticExecption

算术异常

2.7 ClassCastException

类型强转异常

2.8 NegativeArrayException

数组负下标异常

2.9 SecturityException

违背安全原则异常

2.10 EOFException

文件已结束异常

2.11 FileNotFoundException

文件未找到异常

2.12 NumberFormatException

字符串转换为数字异常

2.13 SQLException

操作数据库异常

2.14 IOException

输入输出异常

2.15 NoSuchMethodException

方法未找到异常

2.16 NoSuchFieldException

属性不存在异常

2.17 RuntimeException

运行时异常

2.18 TypeNotPresentException

类型不存在异常

当然,其实还有很多其他异常,这里就不一一列举了。

三. 仿写异常及其好处

看了怎么多的异常,那怎么仿写一个异常呢?下面给出一个例子:

 public GestureHelper setPointCount(int pointCount){
  if(pointCount<=0){
   throw new SecurityException("====pointCount 请输入大于零的值=======");
  }
  return GestureHelper.this;
 }

这是我代码中的一个方法,要求是输入的 pointCount 要大于零,当输入的值不满足条件的时候,会抛出不安全异常,然后出现括号中提示,类似如下:

这样的话,仿写异常的好处立见分晓了,就是当我们在写一个工具类,传入参数不符合条件的话,在运行期就能帮我们检测自己的代码中是否有不规则的东西,能帮我们检测代码的质量。

所以,这无疑是极好的!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。


推荐阅读
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文介绍了如何使用 PostgreSQL 的 `UPDATE ... FROM` 语法,通过映射表实现对多行记录进行高效的批量更新。这种方法不仅适用于单列更新,还支持多列的同时更新。 ... [详细]
  • 本文详细介绍了如何使用libpq库与PostgreSQL后端建立连接。通过探讨PQconnectdb()函数的工作原理及其在实际应用中的使用方法,帮助读者理解并掌握建立高效、稳定的数据库连接的关键步骤。 ... [详细]
  • 本文探讨了如何在发布 XenApp 应用时,通过命令行参数实现启动时的参数传递。特别介绍了静态和动态参数传递的方法,并详细解释了 ICA 文件中两种参数传递方式的区别及安全检查机制。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 尽管某些细分市场如WAN优化表现不佳,但全球运营商路由器和交换机市场持续增长。根据最新研究,该市场预计在2023年达到202亿美元的规模。 ... [详细]
  • 在金融和会计领域,准确无误地填写票据和结算凭证至关重要。这些文件不仅是支付结算和现金收付的重要依据,还直接关系到交易的安全性和准确性。本文介绍了一种使用C语言实现小写金额转换为大写金额的方法,确保数据的标准化和规范化。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
author-avatar
超级活死人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有