运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。 错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。...ArrayStoreException 试图将错误类型的对象存储到一个对象数组时抛出的异常。 ClassCastException 当试图将对象强制转换为不是实例的子类时,抛出该异常。...UnsupportedOperationException 当不支持请求的操作时,抛出该异常。 下面的表中列出了 Java 定义在 java.lang 包中的检查性异常类。...(异常类型 异常名(变量)){ 针对异常进行处理的代码 }catch(异常类型 异常名(变量)){ 针对异常进行处理的代码 }…...在catch捕获异常时,为什么不考虑使用Throwable类型,而只是使用Exception来进行接收? Throwable表示的范围要比Exception大。
final 定义的变量,初始化变量后不可修改。final定义的方法不可以被覆写。final定义的类不可以继承。 finally用于异常结构,不论是否发生异常,都会运行finally中的代码。...抛出异常 什么是抛出异常? 抛出异常就是遇到检查异常,并没有捕获异常直接处理,而是将异常交给调用方处理。 为什么要抛出异常而不是直接捕获? 因为设计上的需要。...throws:1)抛出的是类,在方法后面写的是异常的类名 2)可以同时抛出多种类型异常 3)throws抛出的异常不一定会发生 4)在方法名处抛出 throw:1)抛出的是异常类的实例 2)只能抛出一种异常...3)抛出的异常一定会发生 4)在方法内部抛出 throw用在抛出不检查异常的情况比较多。...使用throw可以将代码的逻辑补充的更加完整,因为某些异常在特定的情况是需要根据业务逻辑来判断是否抛出,在特定的情况下是可以确定异常的,而不是像throws不确定是否会出现异常。
最近又复习了一下阿里出品的,对于开发过程中绝大多数开发者都遵循开发手册,相信开发团队的代码可维护性能够绝对性提高。为什么要整理出这篇文章呢?...【强制】POJO 类中布尔类型变量都不要加 is 前缀,否则部分框架解析会引起序列化错误。...这点要特别注意,如果位置错误真的会抛出NPE问题,而且目前小编在code review过程中也发现同事会存在这样的问题; 12....如果更新学生表中的 student_id,同时触发成绩表中的 student_id 更新,即为级联更新。...25【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。 说明:1)增加查询分析器解析成本。 2)增减字段容易与 resultMap 配置不一致。
"法典只是指南,而不是规定。" --本人对此深表赞同。...但是, 为什么每个对象都要求能在哈希表中插入自己的哈希值呢?要求每一个对象能够做到似乎是一个奇怪的事情。...然而,这只是个理想情况,实际上确是: Rule:当对象包含在依赖于哈希代码保持稳定的数据结构中时, GetHashCode 返回的整数决不能更改 使一个对象的hash值随着对象的字段变化而变化是可行的,...我把它归类为 "指南" 而不是 "规则", 因为它是如此含糊。什么才叫慢?这由你来决定。...十多年前, 我为 msn.com 后端服务器使用的表编写了一个字符串哈希算法。我认为这是一个合理的随机分布的算法, 但我犯了一个错误, 它不是。
1.异常分类错误Error:原因示例笔误像变量名写错,造成的语法错误逻辑错误 算法写错了,例如原本逻辑是求和,但写成了乘积函数或者类使用错误这类也归为逻辑错误写代码时,错误是可以避免的。...异常Exception有时候程序写的没有问题,也没有语法错误,但在某些情况下依然出现一些意外,导致程序无法正常执行,就是通常所说的异常。例如open函数操作一个文件,但该文件不存在,这就是一个异常。...异常不可能全部避免的。2.健壮的代码健壮的代码要避免错误,捕获处理各种异常 。...主动抛出异常raise 语句显式抛出异常,捕获异常try:待捕获异常的代码块except [异常类型]:异常处理示例代码num1 = int(input("请输入第一个整数:"))num2 = int(...pass总结:try: passexcept Exception: #捕获异常处理 passelse: #没有异常发生时执行 passfinally: #退出try,最终一定会执行
查询结果多于一条则抛出异常;查询结果没有数据则抛出Model.DoesNotExist异常。...聚合查询 聚合查询是指对一个表中的一个字段的数据进行部分或全部进行统计查询。 分为整表聚合和分组聚合。...字典 分组聚合 其实是为了实现Having语句 通过计算查询结果中每一个对象所关联的对象集合,从而得出总计值,为查询集的每一项生成聚合 QuerySet.annotate(结果变量名(别名)=聚合函数...,抛出InvalidPage异常,包含两种异常子类-PageNotInteger页码不是整数和-EmptyPage页码超页 page对象 Paginator对象的page()方法返回Page对象 page...这告诉浏览器该文档是CSV文件,而不是HTML文件 响应为额外添加一个Content-Disposition标头,其中包含CSV文件的名称,它将被浏览器用于开启”另存为”对话框。
java异常和错误 异常是程序中的一些错误,但并不是所有的错误都是异常,也就是在的程序中,不存在所谓的“异常”,只存在错误并且错误有时候是可以避免的。...运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。 错误: 错误不是异常,而是脱离程序员控制的问题。它们在编译期也检查不到的。...例如: try{ // 程序代码 } catch(异常类型1 异常的变量名1){ // 程序代码 } catch(异常类型2 异常的变量名2){ // 程序代码 } catch(异常类型2 异常的变量名...Java的这种异常捕获、处理的模式,可以很好的将正常的代码和出现问题时处理的代码分开,而不是混在一起。...InstantiationException: 当应用程序试图使用 Class 类中的 newInstance 方法创建一个类的实例,而指定的类对象无法被实例化时,抛出该异常。实例化失败有很多原因。
在执行时检测到的错误被称为异常,异常不一定会导致严重后果,但我们不在代码中对它们进行处理,就可能会导致程序中断执行。...标准的异常类型是内置的标识符,而不是保留关键字。 打印出来的异常名称后面是异常发生的原因。错误信息的前一部分以堆栈回溯的形式显示发生异常时代码的上下文。...异常处理 既然程序会抛出异常,那我们就可以编写代码处理这些异常。先看下面的例子,它会让用户一直输入,直到输入的是一个有效的整数。...也就是说,程序中我们只想捕获open引发的异常,而不捕获f.readlines()引发的错误。 异常在抛出时可能具有关联的值,称为异常参数。参数的存在和类型取决于异常类型。...except子句可以在异常名称后面指定一个变量,这个变量就是该异常的实例,它的参数存储在instance.args中。
多重捕获块的语法如下所示: try{ // 程序代码 }catch(异常类型1 异常的变量名1){ // 程序代码 }catch(异常类型2 异常的变量名2){ // 程序代码 }catch...当方法抛出异常列表中的异常时,方法将不对这些类型及其子类类型的异常作处理,而抛向调用该方法的方法,由他去处理。...通过 throw 抛出的异常是一定会产生的。...语句设置在方法参数列表后,throws后可以跟着多个异常类型名,表示抛出的异常,之间用逗号隔开。 表现-种产生异常的可能性,但不一定会发生。...如图,getResult方法中, 针对输入数据可能不是5的倍数的情况,通过throw抛出异常,并设定 异常描述信息,所抛出的异常由方法内部自行try.. catch处理。
Go 语言的字典类型其实是一个哈希表(hash table)的特定实现,在这个实现中,键和元素的最大不同在于,键的类型是受限的,而元素却可以是任意类型的。...哈希值通常是一个无符号的整数。一个哈希表会持有一定数量的桶(bucket),我们也可以叫它哈希桶,这些哈希桶会均匀地储存其所属哈希表收纳的键 - 元素对。...随后,哈希表就会把相应的元素值作为结果返回。 只要这个键 - 元素对存在哈希表中就一定会被查找到,因为哈希表增、改、删键 - 元素对时的映射过程,与前文所述如出一辙。...3: 3, } 这里的变量badMap2的类型是键类型为interface{}、值类型为int的字典类型。这样声明并不会引起什么错误。或者说,我通过这样的声明躲过了 Go 语言编译器的检查。...由于字典是引用类型,所以当我们仅声明而不初始化一个字典类型的变量的时候,它的值会是nil。 在这样一个变量上试图通过键值获取对应的元素值,或者添加键 - 元素对,会成功吗?
使用 模块提供的工具 —— 全局变量、函数、类 使用 as 指定模块的别名 如果模块的名字太长,可以使用 as 指定模块的名称,以方便在代码中的使用 import 模块名1 as 模块别名 注意...实际开发场景 在实际开发中,每一个模块都是独立开发的,大多都有专人负责 开发人员 通常会在 模块下方 增加一些测试代码 仅在模块内使用,而被导入到其他文件中不需要执行 __name__ 属性 __...: 出现错误的处理 try 尝试,下方编写要尝试代码,不确定是否能够正常执行的代码 except 如果不是,下方编写尝试失败的代码 简单异常捕获演练 —— 要求用户输入整数 try: #...: print("未知错误 %s" % result) 当 Python 解释器 抛出异常 时,最后一行错误信息的第一个单词,就是错误类型 异常类型捕获演练 —— 要求用户输入整数 需求 提示用户输入一个整数...,还是有一定难度的 如果希望程序 无论出现任何错误,都不会因为 Python 解释器 抛出异常而被终止,可以再增加一个 except 语法如下: except Exception as result:
添加必要的注释其实,写代码的时候,没有必要写太多的注释,因为好的方法名、变量名,就是最好的注释。...下面是一些命名规范的建议:类和接口应该使用首字母大写的驼峰命名法方法和变量应该使用小写的驼峰命名法常量应该使用全大写字母和下划线开发者是不是选择易于理解的名称给变量、类和方法进行命名4.参数校验我们代码评审的时候...(早发现早处理)自定义封装异常,不要丢弃原始异常的信息Throwable cause注意异常匹配的顺序,优先捕获具体的异常对外提供APi时,要提供对应的错误码系统内部应该抛出有业务含义的自定义异常,而不是直接抛出...事务控制规范一般推荐使用编程式事务,而不是一个注解 @Transactional的声明式事务。...开发者需要注意远程调用返回的错误码,除非是明确的失败,如果仅仅是超时等问题,不能当作失败处理!而是应该发起查询,确认是否成功,再做处理。
【推荐】 在类中删除未使用的任何字段、方法、内部类;在方法中删除未使用的任何参数声明 与内部变量。 9. 【参考】 谨慎注释掉代码。在上方详细说明,而不是简单地注释掉。...【强制】 对于数据库中表记录的查询和变更,只要涉及多个表,都需要在列名前加表的别名(或 表名)进行限定。...说明: 对多表进行查询记录、更新记录、删除记录时,如果对操作列没有限定表的别名(或表名),并且 操作列在多个表中存在时,就会抛异常。...(或表名)的限制,正常运行两年后,最近在 某个表中增加一个同名字段,在预发布环境做数据库变更后,线上查询语句出现出 1052 异常:Column 'name' in field list is...【参考】 代码即文档的观点是错误的,清晰的代码只是文档的某个片断,而不是全部。
在当时Twitter的团队从MySQL转向Cassandra时,需要一种新的方法来生成ID号,而Cassandra中没有顺序ID生成工具,所以,应运而生雪花ID出现了。...在next_id()方法中,我们首先获取当前时间戳,并检查是否比上一次生成ID的时间戳小。 (1)如果是,则抛出异常,因为这表示时钟回退。...如果是,则抛出异常,因为这表示时钟回退。 4 测试代码 在测试代码中,我们使用一个循环来生成10个唯一的ID,并打印出来。如果时钟回退,则会抛出一个异常并打印错误信息。...,但是为了确保算法的正确性和程序的严谨性,我们需要处理错误和边界情况,比如当同一毫秒内生成的ID超过序列号的最大值时,需要等待下一毫秒再生成。...在计算机的表示中,第一位是符号位,0表示整数,第一位如果是1则表示负数,我们用的ID默认就是正数,所以默认就是0,那么这一位默认就没有意义。 2 机器位怎么用?
Java内置异常类 A:Java 的非检查性异常 异常 描述 ArithmeticException 当出现异常的运算条件时,抛出此异常。例如,一个整数"除以零"时,抛出此类的一个实例。...InstantiationException 当试图使用 Class 类中的 newInstance 方法创建一个类的实例,而指定的类对象因为是一个接口或是一个抽象类而无法实例化时,抛出该异常。...1){ ...... }catch (异常类型2 异常的变量名2){ ...... }catch (异常类型3 异常的变量名3){ ...... } try:用于监听异常 catch...,finally 代码块出现在 catch 代码块最后,语法如下: try{ ...... }catch(异常类型1 异常的变量名1){ ...... }catch(异常类型2 异常的变量名...A:throws 用在方法声明后,跟的是异常类名 可以跟多个异常类名,用逗号隔开 表示抛出异常,由该方法的调用者来处理 throws表示出现异常的一种可能性,不一定会发生这些异常 B:throw 用在方法体内
前言 参考:阿里巴巴Java开发手册V1.3.0 总结比较重要的,对面试有用的开发规约 一、编程规约 (一)命名风格 【强制】POJO 类中布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误...【推荐】字段允许适当冗余,以提高查询性能,但必须考虑数据一致。冗余字段应遵循: 1 ) 不是频繁修改的字段。 2 ) 不是 varchar 超长字段,更不能是 text 字段。...正例:商品类目名称使用频率高,字段长度短,名称基本一成不变,可在相关联的表中冗余存 储类目名称,避免关联查询。...如果更新学生表中的 student _ id ,同时触发成绩表中的 student _ id 更新,即为级联更新。...(四)ORM 映射 【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。 六、工程结构 (一)应用分层 ?
(开发过程中的语法错误和逻辑错误不是异常) 执行过程中所发生的异常事件可分为两大类: 1.Error(错误):Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。...常见的编译异常 SQLException:操作数据库时,查询表可能发生异常 IOException:操作文件时,发生的异常 FileNotFoundException:当操作一个不存在的文件时,发生异...课后练习题 如果用户输入的不是一个整数,就提示他反复输入,直到输入一个整数为止 package com.hspedu.try_; import java.util.Scanner; public class...然后将该输入的值,转成一个int //4. 如果在转换时,抛出异常,说明输入的内容不是一个可以转成int的内容 //5....自定义异常 基本概念 当程序中出现了某些“错误”,但该错误信息并没有在 Throwable 子类中描述处理,这个时候可以自己设计异常类,用于描述该错误信息。
在当时Twitter的团队从MySQL转向Cassandra时,需要一种新的方法来生成ID号,而Cassandra中没有顺序ID生成工具,所以,应运而生雪花ID出现了。...在next_id()方法中,我们首先获取当前时间戳,并检查是否比上一次生成ID的时间戳小。 (1)如果是,则抛出异常,因为这表示时钟回退。...如果是,则抛出异常,因为这表示时钟回退。 4 测试代码 在测试代码中,我们使用一个循环来生成10个唯一的ID,并打印出来。如果时钟回退,则会抛出一个异常并打印错误信息。...,但是为了确保算法的正确性和程序的严谨性,我们需要处理错误和边界情况,比如当同一毫秒内生成的ID超过序列号的最大值时,需要等待下一毫秒再生成。...在计算机的表示中,第一位是符号位,0表示整数,第一位如果是1则表示负数,我们用的ID默认就是正数,所以默认就是0,那么这一位默认就没有意义。
通过捕获异常,我们可以在遇到错误时进行适当的处理,而不是直接终止程序的执行。...在接下来的内容中,我将介绍一些常见的异常情况,以及万能异常捕获(在工作中常常使用,即无论什么错误都直接抛出一个通用异常),还有为了处理业务逻辑而自定义的异常类。...: print("无效的输入,请输入一个整数")其他常见异常:TypeError:类型错误,当一个操作或函数应用于不适当类型的对象时抛出。...IndexError:索引错误,当尝试访问一个不存在的索引时抛出。KeyError:键错误,当尝试访问字典中不存在的键时抛出。...FileNotFoundError:文件未找到错误,当试图打开一个不存在的文件时抛出。ZeroDivisionError:零除错误,当尝试除以零时抛出。
这恰好符合动词的定义,因此函数名通常是一个动词。 变量名宁可长一些说明清楚用途也不要用a、b、c之类的无意义的名称,除非是循环计数器中用i、j、k等约定俗成的一些变量名。...如果等于0则表示查询出所有文章。 * @param pageIndex 分页索引号。必须为一个大于0的整数,第一页索引为1。...为什么是System.out.println("");而不是logger.debug("");? 为什么是1、2而不是一些更明确的文字信息呢? 在这里,合理的方式是下面这样。...孤立的一句错误日志通常没有什么实际作用。比如上面的例子中,如果在找不到指定的模板文件的时候未将发送邮件时指定的模板文件名输出,那么排错的时候无法知道到底是少了哪个模板文件。...如果等于0则表示查询出所有文章。 * @param pageIndex 分页索引号。必须为一个大于0的整数,第一页索引为1。
领取专属 10元无门槛券
手把手带您无忧上云