想了解如何在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 函数中记录自述性错误消息(如何在 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 函数中记录自述性错误消息数据)
如何记录自述性错误消息?使用 getmessage() 方法记录错误消息,提供原因和发生位置。使用 printstacktrace() 方法打印堆栈跟踪以获取额外信息。
如何在 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 解决
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 错误消息邮差的结果:
我用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>?
如何解决Java 11:如何在 Java 中总结两个 Single<Optional<>>?
请帮忙,如何在java 11中总结两个Single
我正在使用 RxJava,但我认为它没有任何意义。
例如:
Single<Optional<MonetaryAmount>> first = someMethod1(a,b);
Single<Optional<MonetaryAmount>> second = someMethod2(a,b);
我不想在语法上而是在逻辑上做这样的事情
Single<Optional<MonetaryAmount>> result = first + second;
我试图做这样的事情,但它在 java 11 中不起作用
Single<Optional<MonetaryAmount>> result = Stream.concat(first,second)
.reduce(MonetaryAmount::sum);
你有什么想法吗?
解决方法
使用 concatMapSingle
和 mapOptional
获取当前值:
Observable<Single<Optional<MonetaryAmount>>> amounts =
Observable.fromArray(first,second);
amounts.concatMapSingle(v -> v)
.mapOptional(v -> v) // RxJava 3
.reduce(MonetaryAmount::sum)
;
对于 RxJava 2,使用过滤器+映射组合:
.filter(Optional::isPresent)
.map(Optional::get)
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
本文标签: