GVKun编程网logo

如何在 Java 函数中记录自述性错误消息(如何在 java 函数中记录自述性错误消息数据)

4

想了解如何在Java函数中记录自述性错误消息的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于如何在java函数中记录自述性错误消息数据的相关问题,此外,我们还将为您介绍关于Error:jav

想了解如何在 Java 函数中记录自述性错误消息的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于如何在 java 函数中记录自述性错误消息数据的相关问题,此外,我们还将为您介绍关于Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError 解决、Hibernate不从数据库返回第一条记录 User.java Role.java UserRepository.java application.properties UserController.java 错误消息邮差的结果:、Java 11:如何在 Java 中总结两个 Single>?、Java gson 使用 将 Java 对象转为 Json 并 Json 转回 Java 对象的新知识。

本文目录一览:

如何在 Java 函数中记录自述性错误消息(如何在 java 函数中记录自述性错误消息数据)

如何在 Java 函数中记录自述性错误消息(如何在 java 函数中记录自述性错误消息数据)

如何记录自述性错误消息?使用 getmessage() 方法记录错误消息,提供原因和发生位置。使用 printstacktrace() 方法打印堆栈跟踪以获取额外信息。

如何在 Java 函数中记录自述性错误消息

如何在 Java 函数中记录自述性错误消息

编写代码时,清楚地记录错误消息至关重要,因为这有助于调试和理解错误的根本原因。在 Java 中,用于记录错误消息的标准方法是使用 Throwable 类。

Throwable 类是所有错误和异常的基类,它提供了记录错误消息的 getMessage() 方法。此外,它还提供了 printStackTrace() 方法,用于打印错误堆栈跟踪。

立即学习“Java免费学习笔记(深入)”;

自述错误消息

自述性错误消息是描述错误的根本原因和发生位置的清晰简洁的消息。它应该帮助开发人员快速了解并解决问题。

使用 getMessage() 记录自述性错误消息

要记录自述性错误消息,请使用 getMessage() 方法。以下示例演示了如何使用 getMessage() 方法记录错误消息:

try {
    // 运行可能会引发异常的代码
} catch (Exception e) {
    System.out.println("错误消息:" + e.getMessage());
}
登录后复制

使用 printStackTrace() 打印堆栈跟踪

在某些情况下,仅仅记录错误消息是不够的。堆栈跟踪提供了有关错误发生位置的附加信息。要打印堆栈跟踪,请使用 printStackTrace() 方法。

以下示例演示了如何使用 printStackTrace() 方法打印堆栈跟踪:

try {
    // 运行可能会引发异常的代码
} catch (Exception e) {
    e.printStackTrace();
}
登录后复制

实战案例

考虑以下代码片段:

public void divide(int a, int b) {
    if (b == 0) {
        throw new IllegalArgumentException("除数不能为零");
    }
    System.out.println(a / b);
}
登录后复制

在这个例子中,当 b 等于 0 时,我们抛出一个 IllegalArgumentException。错误消息清楚地指出除数不能为零。

结论

记录自述性错误消息在 Java 编程中非常重要。通过使用 getMessage() 和 printStackTrace() 方法,您可以提供有关错误的清晰描述,帮助调试和理解错误的根本原因。

以上就是如何在 Java 函数中记录自述性错误消息的详细内容,更多请关注php中文网其它相关文章!

Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError 解决

Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError 解决

Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError 解决

IDEA 发现一个奇怪的错误
今天用 IDEA2018.1 运行 SpringBoot 项目报错如下:
Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError: org/springframework/boot/configurationprocessor/metadata/ConfigurationMetadata at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:169)
解决方案:
分下看这个跟 Eclipse 有关,可是这个不是 Eclipse 项目(没有 Eclipse 的 Workspeace 信息),后来查找发现跟 Eclipse 有关设置就是之前自己设置锅编译器,改过来问题得到解决。解决步骤:IDEA 中 File-->settings-->Bulid Execution Deloyment-->Complier-->Java Complier 中的 user complier 有原来的 Eclipse 改为 javac 即可

Hibernate不从数据库返回第一条记录 User.java Role.java UserRepository.java application.properties UserController.java 错误消息邮差的结果:

Hibernate不从数据库返回第一条记录 User.java Role.java UserRepository.java application.properties UserController.java 错误消息邮差的结果:

如何解决Hibernate不从数据库返回第一条记录 User.java Role.java UserRepository.java application.properties UserController.java 错误消息邮差的结果:

我用Oracle 19c作为数据库构建了一个Spring Boot应用程序。我已经使用Spring Data Rest和JPA基于数据库中的表和一些简单的端点创建了实体,但是当为所有记录调用数据库时,它从第二条记录开始返回数据,并且当我尝试访问以id为路径的端点时变量以检索单个对象,发生错误。

我用Postman测试我的休息控制器。带有users / 1的Spring Data Rest没有返回任何内容,并且返回404状态。输入URL的EntityManager也不返回任何值,但状态为200。当我尝试从控制器中的JpaRepository findById()调用该方法时,它显示错误500。

User.java

@Entity
@Table(name = "USER")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private int id;

    @Column(name = "NAME")
    private String name;

    @Column(name = "USERNAME")
    private String username;

    @Column(name = "PASSWORD")
    private String password;

    @ManyToMany(cascade = {CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH},fetch = FetchType.LAZY)
    @JoinTable(name = "USER_ROLE",joinColumns = @JoinColumn(name = "USER_ID"),inverseJoinColumns = @JoinColumn(name = "ROLE_ID"))
    private List<Role> roles;

    public User() {
    }

    public User(String name,String username,String password) {
        this.name = name;
        this.username = username;
        this.password = password;
    }

   // setters/getters
}

Role.java

@Entity
@Table(name = "ROLE")
public class Role {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private int id;

    @Column(name = "NAME")
    private String name;

    @ManyToMany(mappedBy = "roles")
    private List<User> users;


    public Role() {
    }

    public Role(String name) {
        this.name = name;
    }

    // setters/getters
}

UserRepository.java

@Repository
public interface UserRepository extends JpaRepository<User,Integer> {
}

application.properties

spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:placeholder
spring.datasource.username=placeholder
spring.datasource.password=placeholder

spring.jpa.show-sql=true
hibernate.dialect=org.hibernate.dialect.Oracle12cDialect

UserController.java

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserRepository userRepository;

    @Autowired
    private EntityManager entityManager;

    @Transactional
    @GetMapping("/")
    public List<User> getAll() {
        List<User> users = entityManager.createquery("from User",User.class).getResultList();
        System.out.println(users);
        return users;
    }

    @Transactional
    @GetMapping("/{userId}")
    public User getUser(@PathVariable("userId") Integer userId) {
        System.out.println("Sended id: " + userId);
        return userRepository.findById(userId).get();
    }
}

错误消息

Sended id: 1
Hibernate: select user0_.id as id1_2_0_,user0_.name as name2_2_0_,user0_.password as password3_2_0_,user0_.username as username4_2_0_ from user_table user0_ where user0_.id=?
2020-09-19 15:48:27.350 ERROR 18860 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing Failed; nested exception is java.util.NoSuchElementException: No value present] with root cause

java.util.NoSuchElementException: No value present
    at java.base/java.util.Optional.get(Optional.java:141) ~[na:na]
    at springboot.resources.UserController.getUser(UserController.java:41) ~[classes/:na]
    at springboot.resources.UserController$$FastClassBySpringcglib$$344055f.invoke(<generated>) ~[classes/:na]
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.aop.framework.cglibAopProxy$DynamicAdvisedInterceptor.intercept(cglibAopProxy.java:687) ~[spring-aop-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at springboot.resources.UserController$$EnhancerBySpringcglib$$a0145449.getUser(<generated>) ~[classes/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:567) ~[na:na]
    at org.springframework.web.method.support.invocableHandlerMethod.doInvoke(invocableHandlerMethod.java:190) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.method.support.invocableHandlerMethod.invokeForRequest(invocableHandlerMethod.java:138) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandlerMethod.java:105) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:1040) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:943) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) ~[tomcat-embed-core-9.0.37.jar:4.0.FR]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.37.jar:4.0.FR]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.tomcat.util.net.socketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at java.base/java.lang.Thread.run(Thread.java:830) ~[na:na]

邮差的结果:

UserController.java:

https://imgur.com/f56A1Ln

https://imgur.com/52fBKS4

https://imgur.com/9Xo5PuO

从Spring Data Rest自动创建的端点:

https://imgur.com/TIGe1Q9

https://imgur.com/1FN4geC

https://imgur.com/klBJLZb

数据库中的数据:https://imgur.com/q4oH9O7

有解决此问题的建议吗?

解决方法

删除@Transaction,希望它能工作。

,

我还是java的新手程序员,但是我会根据我的经验尝试回答

存储库findById返回Optional,因此,当您直接使用userRepository.findById(userId).get()并且对应的userId不存在时,就会发生异常java.util.NoSuchElementException

使用Optional时,请确保先检查该值是否存在,然后再使用get。将getUser方法更改为

@Transactional
@GetMapping("/{userId}")
public User getUser(@PathVariable("userId") Integer userId) {
 
Optional<User> user = userRepository.findById(userId);
return user.ifPresent() ? user : null;
}

在不存在Response的情况下,我建议使用HttpStatus 404对象返回特定的userId,这是查询byId操作的标准方式。

Java 11:如何在 Java 中总结两个 Single<Optional<>>?

Java 11:如何在 Java 中总结两个 Single>?

如何解决Java 11:如何在 Java 中总结两个 Single<Optional<>>?

请帮忙,如何在java 11中总结两个Single

我正在使用 RxJava,但我认为它没有任何意义。

例如:

  1. Single<Optional<MonetaryAmount>> first = someMethod1(a,b);
  2. Single<Optional<MonetaryAmount>> second = someMethod2(a,b);

我不想在语法上而是在逻辑上做这样的事情

  1. Single<Optional<MonetaryAmount>> result = first + second;

我试图做这样的事情,但它在 java 11 中不起作用

  1. Single<Optional<MonetaryAmount>> result = Stream.concat(first,second)
  2. .reduce(MonetaryAmount::sum);

你有什么想法吗?

解决方法

使用 concatMapSinglemapOptional 获取当前值:

  1. Observable<Single<Optional<MonetaryAmount>>> amounts =
  2. Observable.fromArray(first,second);
  3. amounts.concatMapSingle(v -> v)
  4. .mapOptional(v -> v) // RxJava 3
  5. .reduce(MonetaryAmount::sum)
  6. ;

对于 RxJava 2,使用过滤器+映射组合:

  1. .filter(Optional::isPresent)
  2. .map(Optional::get)

Java gson 使用 将 Java 对象转为 Json 并 Json 转回 Java 对象

Java gson 使用 将 Java 对象转为 Json 并 Json 转回 Java 对象

http://blog.csdn.net/anialy/article/details/7772546

我们今天的关于如何在 Java 函数中记录自述性错误消息如何在 java 函数中记录自述性错误消息数据的分享已经告一段落,感谢您的关注,如果您想了解更多关于Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError 解决、Hibernate不从数据库返回第一条记录 User.java Role.java UserRepository.java application.properties UserController.java 错误消息邮差的结果:、Java 11:如何在 Java 中总结两个 Single>?、Java gson 使用 将 Java 对象转为 Json 并 Json 转回 Java 对象的相关信息,请在本站查询。

本文标签: