本文共 4751 字,大约阅读时间需要 15 分钟。
1、在不需要注释的地方使用注释
// 获得所有最长的字符串function longestString(inputArray) { // 初始化将第0个字符串的长度设置为最大长度 let length = inputArray[0].length; for (let i = 1; i < inputArray.length; i++) { // 检查当前字符串长度是否大于最大长度 if (length < inputArray[i].length) { length = inputArray[i].length; } } // 过滤小于最大长度的字符串 const strs = inputArray.filter(() => { return word.length === length; }); return strs;}
去除不必要的注释,使用更清晰的变量、方法的命名
function getLongestStrings(inputArray) { let longestWordLength = inputArray[0].length; for (let i = 1; i < inputArray.length; i++) { if (longestWordLength < inputArray[i].length) { longestWordLength = inputArray[i].length; } } const longestWords = inputArray.filter(() => word.length === length); return longestWords;}
2、一般来说不优雅的代码才需要注释
3、不明确的注释,甚至误导别人的注释 4、注释而不删除遗留的代码 5、版本控制代码Java中的异常处理通过向用户显示有意义的消息并继续(或终止)程序流,提供了一种处理抛出异常情况的方法
try catch finally …… 此处省略300字所有非 RunTimeException 的 Exception 被称为 Checked Exception
在异常层次结构中。如果异常是 RuntimeException 的子类,则它是 unchecked exception 。通过 try catch 块,也可以捕获 unchecked exception ,但不必这样做。因为它在编译时无法验证,因此,被称为 “unchecked”
CheckedExcpetion 和 UnCheckedException 的区别
Checked Exception: 这些是应用程序应该预期并从中恢复的特殊情况
Unchecked/Runtime Exception: 这些是应用程序外部的异常情况,应用程序通常无法预料或恢复它们 Error: 它定义了不希望被程序捕获的异常try (AutoCloseableObjecct app = new AutoCloseableObjecct()) { System.out.println("--执行main方法--");} catch (Exception e) { System.out.println("--exception--");} finally { System.out.println("--finally--");}
// the result is 20static int getValue() { try{ return 10; } finally { return 20; }}
当方法发生异常时,将(在发生异常的地方)创建一个异常对象并抛出它。创建的异常对象包含:错误信息、错误类型信息和错误发生时程序状态
根据java文档,如果您对下面的任何问题回答“是”,那么您应该编写自己的自定义异常类;否则,您可以使用现有的异常
仅当您希望异常具有更高的可读性,且java中的现有异常类中不存在该异常类型,才创建自定义异常类。否则,请坚持已存在的异常之一
为了决定是将您自己的自定义异常编写为checked异常还是unchecked异常,规则如下
如果代码中可以采取一些措施从预期的错误中恢复,则将自定义异常设置为 checked 异常。另一方面,如果用户在出现错误时无法执行任何有用的操作,则将自定义异常设置为 unchecked 异常
大多数情况下,自定义异常的唯一功能是记录错误。在这种情况下,它绝对应该是一个 unchecked 异常。
程序上的 BUG 一般偏向于使用 unchecked 异常。编码上的错误我指的是无效的输入参数或不正确的方法实现,应用程序无法在中期执行中解决问题。它能做的最好的事情是记录问题并等待开发人员在以后修复它
如果没有为客户端代码提供任何有用的信息,请不要创建新的自定义异常类。
如果用户可以采取一些措施从异常中恢复,请将自定义异常作为 checked 异常。如果用户无法做任何有用的事情,则为 unchecked 异常
通常自定义异常仅用于日志记录目的,因此最好使用 unchecked 异常。因为,我们可以在 try-catch 块中捕获 unchecked 异常。只是编译器不会强迫我们这样做
尝试在异常消息中提供导致异常的参数。栗如年龄大于 200 异常,年龄也附加在异常消息中。这使得程序员寻找错误原因变得容易
throwable 类提供了四个构造,自定义异常类中尝试提供所有这些构造。至少提供三个:无参构造,一个带有消息字符串的构造,接受另一个 throwable 的构造。最后一个很重要,因为我们正在将最初抛出的错误包装在一些自定义异常中并重新抛出。在这种情况下,将原始异常作为原因参数有助于找到错误的根本原因
catch (NoSuchFieldException exp) { Log.error("Exception occurred", exp); throw exp;}
catch (SQLException ex) { throw new RuntimeException("DB error", ex);}
转载地址:http://ncyzk.baihongyu.com/