gpt4 book ai didi

java - try/catch 在 Java 中不起作用?

转载 作者:行者123 更新时间:2023-11-29 20:48:22 25 4
gpt4 key购买 nike

我正在 Qt 中为 android 开发一个应用程序。因此,为了使用 Google API,我需要实现 Java。因此,我查看了 QtNotifier 示例,并尝试将其实现为初学者。

这个 Java 示例也来自 QtNotifier 示例,因此它应该工作相同,但事实并非如此。我尝试使用 Qt 调试器对其进行调试,但断点似乎没有触发所以我添加了 println 语句以查看它在哪一行出错。但这还不够,所以我尝试使用 catch/try 子句打印堆栈跟踪。

我是这样实现的:

package org.qtproject.qt5.example;

import android.app.Notification;
import android.app.NotificationManager;
import android.content.Context;
import java.lang.Object;
import java.io.Writer;
import java.io.StringWriter;
import java.io.PrintWriter;


public class NotificationClient extends org.qtproject.qt5.android.bindings.QtActivity
{
private static NotificationManager m_notificationManager;
private static Notification.Builder m_builder;
private static NotificationClient m_instance;

public NotificationClient()
{
System.out.println("it works2222");
m_instance = this;
}

public static void notify(String s)
{
System.out.println(s);

try {
if (m_notificationManager == null) {
System.out.println("1111");
m_notificationManager = (NotificationManager)m_instance.getSystemService(Context.NOTIFICATION_SERVICE);
System.out.println("2222");
m_builder = new Notification.Builder(m_instance);
System.out.println("3333");
m_builder.setContentTitle("A message from Qt!");
System.out.println("4444");
}

System.out.println("5555");
m_builder.setContentText(s);
System.out.println("6666");
m_notificationManager.notify(1, m_builder.build());
System.out.println("7777");

} catch(Exception e) {
StringWriter writer = new StringWriter();
PrintWriter pw = new PrintWriter(writer);
e.printStackTrace(pw);
String errorDetail = writer.toString();
}
}
}

输出是:

I/System.out( 4768): test string
I/System.out( 4768): 1111

m_instance 似乎仍然为空,因为“System.out.println("it works2222");"没有被调用。但是错误没有被捕获。

是不是因为这是一个不属于异常的错误?

我也试过运行 QtNotifier 应用程序,但里面有 printstatement。

public NotificationClient()
{
System.out.println("it works2222");
m_instance = this;
}

但这也没有在 QtNotifier 应用程序中调用。

我的问题是:如何追踪这个错误?

最佳答案

在 Java 中,既有错误,也有异常。通常,错误 足以让您的程序崩溃并退出。但是,出于调试目的,如果你想捕获两者,你应该

catch (Throwable t)
{
t.printStackTrace();
}

获取两者的信息。

关于java - try/catch 在 Java 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29828234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com