导航:首页 > 源码编译 > 空指针异常编译器不报错

空指针异常编译器不报错

发布时间:2022-04-27 06:02:35

java编程菜鸟的一个问题

空指针异常,编译的时候是不报错的。但是运行的时候,如果对一个null对象调用方法或者变量,就会出现空指针异常,例如:String a=null;a.replace();就会报空指针异常,看看你报错的这一行,肯定有类似的情况。

㈡ 编译器不会强制程序员处理哪种异常

在java编译器中,是不会强制要求程序员进行处理Runtime异常的。

RuntimeException类及其子类的实例被称为运行时异常,即UnChecked Exception。

我们较为常见的NullPointerException(空指针异常)和 IndexOutOfBoundsException(数组越界异常),对于这些Runtime异常。

在java编译器中是不会强制要求程序员进行处理或声明的(有些IDE可能会给可能出现Runtime异常问题的提示,但不会报错)。

常见的RunTime异常几种如下:

NullPointerException - 空指针引用异常。

ClassCastException - 类型强制转换异常。

IllegalArgumentException - 传递非法参数异常。

ArithmeticException - 算术运算异常。

ArrayStoreException - 向数组中存放与声明类型不兼容对象异常。

IndexOutOfBoundsException - 下标越界异常。

NegativeArraySizeException - 创建一个大小为负数的数组错误异常。

NumberFormatException - 数字格式异常。

SecurityException - 安全异常。

UnsupportedOperationException - 不支持的操作异常。

㈢ 空指针错误是什么意思

所谓的空指针异常,就是一个指针是空指针,你还要去操作它,既然它指向的是空对象,它就不能使用这个对象的方法。比如上面的s假如为null,你还要用s的方法,比如s.equals( String x);那么就会产生空指针异常。

产生空指针异常的原因:

(1) 当一个对象不存在时又调用其方法会产生异常    obj.method() // obj对象不存在 

(2) 当访问或修改一个对象不存在的字段时会产生异常    obj.method()  // method方法不存在

(3)空指针异常编译器不报错扩展阅读:

空指针正常工作意义:

在许多语言,这不是一个单独的转义序列,而是八进制转义序列,单个八进制数字为0;因此,‘’不能跟随任何数字0通过7;否则它被解释为更长的八进制转义序列的开始。被在使用中发现各种语言的其他转义序列00,x00,z,或的Unicode表示u0000。

表示空字符的能力并不总是意味着生成的字符串将被正确解释,因为许多程序将认为null作为字符串的结尾。因此,键入它的能力(在未经检查的用户输入的情况下)会创建一个称为空字节注入的漏洞,并可能导致安全漏洞。

空字符以逗号表示是^@。在Windows上,可以通过按住Ctrl键,然后按@(这通常需要同时按下⇧ Shift并按下数字2键)。

参考资料:网络——空指针

㈣ 关于java中空指针异常

空指针异常产生的主要原因如下:
(1)当一个对象不存在时又调用其方法会产生异常obj.method() // obj对象不存在
(2)当访问或修改一个对象不存在的字段时会产生异常obj.method() // method方法不存在
(3)字符串变量未初始化;
(4)接口类型的对象没有用具体的类初始化,比如:
List lt;会报错
List lt = new ArrayList();则不会报错了
当一个对象的值为空时,你没有判断为空的情况。你可以试着把下面的代码前加一行代码:
if(rb!=null && rb!="")
改成:
if(rb==null);
if(rb!==null&&rb!="") 或者if((“”).equals(rb))

空指针的解决办法:
重点关注报错发生的所在行,通过空指针异常产生的两条主要原因诊断具体的错误。同时为了避免空指针的发生,最好在做判断处理时将“null”或者空值放于设定的值之前。

㈤ java空指针异常不报错

你能再检查一下你的程序嘛?没有完整程序我不好说。我的JDK也是1.60的版本,我这里会报NullPointer的错。

有3种潜在的可能问题:
1. 你是不是在a里面已经给s赋值了? 虽然b里面没有任何复制,但是a继承了b,a对于s也是可以访问和赋值的。

2. 是不是这执行这一个if之前你的程序有其它错误,就卡住了,所以根本还没有执行到s.equals("...")这里,所以你也收不到这个exception。你可以试一下加一条else语句,确定这个if条件是却是执行过的。比如if (...) System.out.println("equal") else System.out.println("not equal");

3. 你是不是你的代码不小心放到了try {...} catch (Exception e) {...}里面了,但是你catch过后有没有人工报错。

介于你说你的程序执行到一半没有继续执行,很有可能是2, 3两种可能。第一种可能不大。最后就是你执行如果是实用IDE执行,是不是你的IDE在检测到错误的时候自动停止debug也不报错了。

㈥ JAVA编译正常,但是运行出现空指针异常,有大神知道是什么问题吗

㈦ java中的空指针异常怎么解决

原文:https://www.hu.com/question

你这个问题的解决

问题定位:

在堆栈异常信息的第一行就可以定位到是哪里出了空指针,倘若这里不是你写的类,可以往下翻一下,找到你写的类,就是这里出现的空指针。

问题解决:

对一个空对象调用里面的方法或者属性的时候会报空指针,检查这个对象为什么是空即可。

Java 空指针异常的若干解决方案

Java 中任何对象都有可能为空,当我们调用空对象的方法时就会抛出 NullPointerException 空指针异常,这是一种非常常见的错误类型。我们可以使用若干种方法来避免产生这类异常,使得我们的代码更为健壮。本文将列举这些解决方案,包括传统的空值检测、编程规范、以及使用现代 Java 语言引入的各类工具来作为辅助。

运行时检测

最显而易见的方法就是使用 if (obj == null) 来对所有需要用到的对象来进行检测,包括函数参数、返回值、以及类实例的成员变量。当你检测到 null 值时,可以选择抛出更具针对性的异常类型,如 IllegalArgumentException,并添加消息内容。我们可以使用一些库函数来简化代码,如 Java 7 开始提供的 Objects#requireNonNull 方法:

public void testObjects(Object arg) {
Object checked = Objects.requireNonNull(arg, "arg must not be null");
checked.toString();}

Guava 的 Preconditions 类中也提供了一系列用于检测参数合法性的工具函数,其中就包含空值检测:

public void testGuava(Object arg) {
Object checked = Preconditions.checkNotNull(arg, "%s must not be null", "arg");
checked.toString();
}

我们还可以使用 Lombok 来生成空值检测代码,并抛出带有提示信息的空指针异常:

public void testLombok(@NonNull Object arg) {
arg.toString();

生成的代码如下:

public void testLombokGenerated(Object arg) {
if (arg == null) {
throw new NullPointerException("arg is marked @NonNull but is null");
}
arg.toString();
}

这个注解还可以用在类实例的成员变量上,所有的赋值操作会自动进行空值检测。

编程规范

·通过遵守某些编程规范,也可以从一定程度上减少空指针异常的发生。

使用那些已经对 null 值做过判断的方法,如 String#equals、String#valueOf、以及三方库中用来判断字符串和集合是否为空的函数:

if (str != null && str.equals("text")) {}
if ("text".equals(str)) {}

if (obj != null) { obj.toString(); }
String.valueOf(obj); // "null"

// from spring-core
StringUtils.isEmpty(str);
CollectionUtils.isEmpty(col);
// from guava
Strings.isNullOrEmpty(str);
// from commons-collections4
CollectionUtils.isEmpty(col);

·如果函数的某个参数可以接收 null 值,考虑改写成两个函数,使用不同的函数签名,这样就可以强制要求每个参数都不为空了:

public void methodA(Object arg1) {
methodB(arg1, new Object[0]);
}

public void methodB(Object arg1, Object[] arg2) {
for (Object obj : arg2) {} // no null check
}

·如果函数的返回值是集合类型,当结果为空时,不要返回 null 值,而是返回一个空的集合;如果返回值类型是对象,则可以选择抛出异常。Spring JdbcTemplate 正是使用了这种处理方式:

// 当查询结果为空时,返回 new ArrayList<>()
jdbcTemplate.queryForList("SELECT * FROM person");

// 若找不到该条记录,则抛出
jdbcTemplate.queryForObject("SELECT age FROM person WHERE id = 1", Integer.class);

// 支持泛型集合
public <T> List<T> testReturnCollection() {
return Collections.emptyList();
}

静态代码分析

Java 语言有许多静态代码分析工具,如 Eclipse IDE、SpotBugs、Checker Framework 等,它们可以帮助程序员检测出编译期的错误。结合 @Nullable 和 @Nonnull 等注解,我们就可以在程序运行之前发现可能抛出空指针异常的代码。

但是,空值检测注解还没有得到标准化。虽然 2006 年 9 月社区提出了 JSR 305 规范,但它长期处于搁置状态。很多第三方库提供了类似的注解,且得到了不同工具的支持,其中使用较多的有:

㈧ 空指针异常,控制台没有报错,不知道什么原因

应该是后台程序查询相应显示数据的时候出错,此时数据还在后台处理,页面等待后台的数据进行显示,所以页面不显示并且不报错,你根据myEclipse控制台的指针异常信息进行调试问题应该能解决。

㈨ 空指针异常

username.trim();这边的username如果为空就会报空指针,在这前应加一句if(username!=null)
具体如下:String username = request.getParameter("username");
String password = request.getParameter("password");

List<USER> tempUserList;
try {
if(username!=null){
username = username.trim();
tempUserList = userService.findEntityByHql(" username = '" + username + "'" );//页面报空指针
USER baseUser = tempUserList.get(0);
if(baseUser.getPassWord().equals(password)){
return "gly";
}
}
} catch (Exception e) {
e.printStackTrace();
}

㈩ java.lang.NullPointerException 是什么意思啊 该如何处理

这个是空指针异常,空指针的解决办法:重点关注报错发生的所在行,通过空指针异常产生的两条主要原因诊断具体的错误。同时为了避免空指针的发生,最好在做判断处理时将“null”或者空值放于设定的值之前。

在Java中一般报空指针异常的原因有以下几种:

1、字符串变量未初始化;

2、接口类型的对象没有用具体的类初始化,比如:

List lt;会报错

List lt = new ArrayList();则不会报错了

3、当一个对象的值为空时,你没有判断为空的情况。你可以试着把下面的代码前加一行代码:
if(rb!=null && rb!="")

改成:

if(rb==null);

if(rb!==null&&rb!="") 或者if((“”).equals(rb))

(10)空指针异常编译器不报错扩展阅读:

空指针异常的报错

root cause

java.lang.NullPointerException

Dao.BookInfor.ImFromClassification(BookInfor.java:31

org.apache.jsp.front.home_jsp._jspService(home_jsp.java:120)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

javax.servlet.http.HttpServlet.service(HttpServlet.java:731)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)

javax.servlet.http.HttpServlet.service(HttpServlet.java:731)

org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

阅读全文

与空指针异常编译器不报错相关的资料

热点内容
php自动打印 浏览:469
哪个app多年轻人 浏览:902
租的服务器如何重装 浏览:937
干眼症程序员 浏览:239
乐动达人安卓版有什么游戏 浏览:484
c523压缩比 浏览:543
命令语气的人什么心态 浏览:435
程序员喜欢留指甲吗 浏览:516
七牛云服务器收费标准 浏览:627
时光相册加密空间密码忘记 浏览:474
华为云为用户提供的服务云服务器 浏览:634
minecraftlinux服务器搭建 浏览:376
linux命令新建文件 浏览:709
长线pdf 浏览:607
程序员电脑支持手写 浏览:414
解压头戴式耳机推荐 浏览:344
纸条app上怎么样看对方主页 浏览:883
编译英语单词怎么写 浏览:249
编译原理和汇编原理的区别 浏览:864
如何给加密的pdf解密 浏览:770