日常梳理-java日常开发规范及常见问题

Java 异常处理的注意事项

1、尽量不要使用e.printStackTrace(),而是使用log打印。

e.printStackTrace()语句产生的字符串记录的是堆栈信息,如果信息太长太多,字符串常量池所在的内存块没有空间了,即内存满了,那么,用户的请求就卡住啦~

2、禁止在线上环境开启debug

2、用log正确打印异常格式

log.info(“你的程序有异常啦,{}”,e);

3、不要用一个Exception捕捉所有可能的异常

用基类 Exception 捕捉的所有可能的异常,如果多个层次都这样捕捉,会丢失原始异常的有效信息。

4、记得使用finally关闭流资源或者直接使用try-with-resource

5、注意异常对你的代码层次结构的侵染(早发现早处理)

反例:

public UserInfo queryUserInfoByUserId(Long userid) throw SQLException {    //根据用户Id查询数据库}

正例:

public UserInfo queryUserInfoByUserId(Long userid) {    
  try{//根据用户Id查询数据库    
  }catch(SQLException e){
    log.error("查询数据库异常啦,{}",e);    
  }finally{
    //关闭连接,清理资源    
  }}

理由:

我们的项目,一般都会把代码分 Action、Service、Dao 等不同的层次结构,如果你是DAO层处理的异常,尽早处理吧,如果往上 throw SQLException,上层代码就还是要try catch处理啦,这就污染了你的代码~

开发常识

try、catch中finally和return执行顺序

  1. 当try和catch中有return时,finally仍然会执行。
  2. 不管有没有异常,finally块中代码都会执行

当switch括号内的变量类型为String并且此变量为外部参数时,必须先进行null 判断,否则会报空指针异常。

反例:猜猜下面的代码输出是什么?(报空指针异常)

public class SwitchString {
public static void main(String[] args) {
method(null); }
public static void method(String param) { switch (param) {
// 肯定不是进入这里
case "sth": System.out.println("it's sth"); break;
// 也不是进入这里
case "null": System.out.println("it's null"); break;
// 也不是进入这里
default: System.out.println("default");
} }

}

idea常见配置及问题

自动生成注释

给class加注释模板

/**
 *@ClassName ${NAME}
 *@Description TODO
 *@Author xxx
 *@Date ${DATE} ${TIME}
 *@Version 1.0
 **/

Settings–>File And Code Templates
在右边弹出的选择:Files–>Class,添加以上信息
在这里插入图片描述

给方法添加注释

Settings–> Editor --> Live Templates
新建Template Group,然后在其下新建Live Template,
Abbreviation为快捷键,如下,输入cjm(此为快捷键,方法内输入即生成方法注释)

/**
* @Description: TODO
* @Author:amunamuna
* @Date:$date$ $time$
* @Parameters: $tags$
* @Return:$return_type$
**/

注意:这里直接在方法外面加注释,获取不到参数和返回值,因为参数和返回的值只有在函数作用域内,intellij才能找到。所以快捷键最好还是在方法内部敲,再把注释复制出去
在这里插入图片描述

idea用快捷键自动生成序列化id

类继承了Serializable接口之后,使用alt+enter快捷键自动创建序列化id

进入Settings→Editor–>Inspections,在右边界面选择:
Java->serialization issues→勾选serializable class without ‘serialVersionUID’

在这里插入图片描述
之后,光标放在类名上,再次按Alt+Enter键,这个时候可以看到"Add serialVersionUID field"提示信息

idea在windows编辑换行时,生成乱码^M(CRLF->LF)

在window下开发有一个大坑,就是换行默认是CRLF,也就是回车换行,但是Linux下只有换行LF,这样代码提交后,会出现编译问题,所以最好的办法是在IDEA下设置默认为LF。
第一步:File->Settings
第二步:Editor->Code Style
可以看到,默认是System-Dependent,这个其实还是很厉害的,根据系统自动配置,但是你是windows系统,默认是CRLF,服务器是Linux,你就得自己换了。

设置成下面这样【Unix and macOS(\n)】,保存。
在这里插入图片描述

idea在工具栏中显示快速创建包和类的图标

在这里插入图片描述
在这里插入图片描述

idea常用快捷键

shift+alt+v /ctrl+alt+v 生成变量

问题

1. Intellij IDEA Cannot resolve symbol XXX

清理一下idea的缓存,File->Invalidate Caches/Restart 清除缓存重启

2.Error running ‘xxx’: Command line is too long. Shorten command line for xxx or also for Spring Boot default configuration?

打开.idea/workspace.xml文件,找到name为“PropertiesComponent”,增加一行:

<property name="dynamic.classpath" value="true" />

Eclipse

添加comment

给新增的Java类,自动生成Comment。

打开Preferences,找到Java–>Code Style -->Code Templates–>Comments–>Types

添加如下内容:

/**
* 名称: ${file_name}<br>
* 描述: name<br>
* 批次:name<br>
* 创建时间: ${date}<br>
* 修改时间:<br>
* 编写人员:xxx<br>
* 版本号:1.0
*/

eclipse启动时卡住org.eclipse.jdt.core

删除
.metadata.plugins\org.eclipse.debug.core
.metadata.plugins\org.eclipse.jdt.debug.ui
.metadata.plugins\org.eclipse.ui.workbench

eclipse安装反编译插件

1、将jd.ide.eclipse.plugin_1.0.0.jar放在eclipse的安装目录下:E:\eclipse\plugins

重启eclipse.

2、打开eclipse

windows–>Preferences–>General–>Editors–>File Associations

选中*.class

在下边栏位点击add添加 Internal editors,JD class File Viewer,然后设置为默认。

常见问题

java.lang.InternalError: name is too long to represent

在编译非常大的JSP时,会出现java.lang.InternalError: name is too long to represent异常,可采用如下办法来解决:

1.减少JSP大小

2.修改tomcat下的路径为tomcat\conf\web.xml文件中的suppressSmap设置为true即可
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值