Java语言代码出错的时候,输出错误的原因

Java语言代码出错的时候,要求进入一个页面,输出错误的原因,就像qq的那样的功能,怎么才能实现的呢

Java 中,可以使用异常处理机制来捕获并处理代码中的异常,并将错误信息显示在页面上。
示例代码如下 :

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            // 在这里编写可能出错的代码
            int result = 100 / 0; // 除数为0,会抛出 ArithmeticException 异常
            // ...
        } catch (Exception e) {
            // 捕获异常并输出错误信息
            String errorMessage = e.getMessage();
            request.setAttribute("errorMessage", errorMessage);

            // 跳转到错误页面
            request.getRequestDispatcher("/error.jsp").forward(request, response);
        }
    }
}


在错误页面中,可以使用<%= request.getAttribute("errorMessage") %>的方式获取错误信息并输出到页面上。
需要注意的是,为了让异常处理机制生效,你需要确保你的代码在 Servlet 容器中运行,并且配置了正确的映射关系,以便 Servlet 可以被正确调用。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/248870
  • 这篇博客也不错, 你可以看下复习Java第二个项目仿QQ聊天系统 03(两种通信类、登录以及注册功能完善) &Java面试题并发编程相关知识&生活【记录一个咸鱼大学生三个月的奋进生活】025
  • 除此之外, 这篇博客: Java实现QQ邮件群发功能中的 首先是需要把邮件工具类给写出来: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    这里使用IDEA,首先创建一个 Maven 项目:

    然后,就会出现一个工程目录。找到 pom.xml 这个文件,打开它,并在其中添加一段代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.example</groupId>
        <artifactId>e-mailSystem</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>
    
    <!--添加下面这段代码-->
        <dependencies>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-email</artifactId>
                <version>1.5</version>
            </dependency>
        </dependencies>
    
    </project>

    当代码添加完成之后,就可以编写自己的邮件发送工具类了。

    import org.apache.commons.mail.EmailException;
    import org.apache.commons.mail.SimpleEmail;
    /**
     * 自定义发送邮件工具类
     */
    public class SendMailTools {
        /**
         *
         * @param toUser    收件邮箱
         * @param fromUser  发件邮箱
         * @param fromUserPassWord  发件邮箱的POP3/SMTP服务密码
         * @param theme     邮件主题
         * @param content   邮件内容
         * @return    返回一个提示,是否发送成功(true/false)
         */
        public static boolean sendMail(String toUser, String fromUser,
                                       String fromUserPassWord, String theme, 
                                       String content){
            //实例化邮件资源
            SimpleEmail email = new SimpleEmail();
            //设置qq邮件服务器的端口号
            email.setSslSmtpPort("465");
            //使用QQ邮箱的固定写法
            email.setHostName("smtp.qq.com");
            //设置发件人的账户和POP3/SMTP服务密码
            email.setAuthentication(fromUser, fromUserPassWord);
            //编码方式
            email.setCharset("UTF-8");
            try {
                //收件人
                email.addTo(toUser);
                //发件人
                email.setFrom(fromUser);
                //邮件主题
                email.setSubject(theme);
                //邮件内容
                email.setMsg(content);
                //发送
                email.send();
                return true;
            } catch (EmailException e) {
                e.printStackTrace();
                return false;
            }
        }
    }
    

    最后就是测试使用我们这个邮件工具类了。

    import java.io.BufferedReader;
    import java.io.FileReader;
    /**
     * 使用自定义邮件发送工具类实现群发消息
     */
    public class Test {
        public static void main(String[] args) {
            String toFrom = "xxxxxxxxxx@qq.com";         //发件人
            String toFromPassWord = "xxxxxxxxxxxxxxxx";  //发件人邮箱POP3/SMTP服务密码
            String theme = "这是一封测试邮件";             //邮件主题
            String content = "hello word!~~~";           //邮件具体内容
            try(
                 FileReader fs = new FileReader("toUser.txt");//字符流,默认当前项目下的文本文件
                 BufferedReader br = new BufferedReader(fs);  //字符装饰流
                    ){
                String ret = null;
                //循环读取,每次读一行
                while((ret = br.readLine())!=null){
                    //发送成功提示一下
                    if(SendMailTools.sendMail(ret,toFrom,toFromPassWord,theme,content)){
                        System.out.println("发送成功》》》");
                    }else{
                        System.out.println("失败!!!");
                    }
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    

    这里我使用的是从一个 txt 文本文件中读取收件人的邮箱,然后发送。发件人则是固定的。大家在写这个代码时,有兴趣的可以将发件人也使用文件的方式读取,更可以将主题和内容也使用文件读取后发送。

     程序运行结果:

     注意:由于我们这里使用的是QQ邮箱的服务区,所以在同一时间这里可能发送成功了,但是收件人有的可能会收不到,而想要避免这个Bug,两个方法:

    1.在同一时间内发送邮件的数量尽量减少

    2.使用自己的服务器或者是第三方的服务器

  • 您还可以看一下 任亮老师的Java入门教程初级课程中的 01.idea开发工具的安装破解(QQ群672075542领取视频学习资料、开发工具等)小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    要在Java语言代码出错时实现类似QQ的功能,在页面上输出错误的原因,可以使用以下方法:

    1. 引入邮件发送的依赖库:在项目的pom.xml文件中配置依赖,添加以下代码:
    <!--发送邮件-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    
    1. 创建邮件工具类:创建一个名为MailUtil的工具类,用于发送邮件。可以参考段落10中的MailUtil类的代码实现。该类中的sendSimpleMail方法可以用来发送简单的文本邮件。

    2. 在发生异常的地方捕获异常并调用邮件发送:在Java代码中,需要在发生异常的地方添加try-catch块来捕获异常,然后调用邮件工具类的sendSimpleMail方法发送邮件。可以在catch块中编写以下代码:

    try {
        // 发生异常的代码
    } catch (Exception e) {
        // 发送邮件
        MailUtil mailUtil = new MailUtil();
        Mail mail = new Mail();
        mail.setRecipient("bugbugbug@qq.com"); //设置收件人
        mail.setSubject("代码错误通知"); //设置邮件主题
        mail.setContent("发生错误的原因是:" + e.getMessage()); //设置邮件内容
        mailUtil.sendSimpleMail(mail); //发送邮件
    }
    

    在上面的代码中,需要将收件人的邮箱地址替换成你的实际邮箱地址。

    通过以上步骤,当代码发生异常时,会捕获到异常并发送邮件,邮件中包含了异常的原因。这样就实现了类似QQ的功能,在页面上输出错误的原因。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

可以写个全局捕捉异常的方法进行相对应处理 具体实现可以百度 应该很多