我希望能够在构建 Blazor 单页应用程序的一个地方捕获所有未处理的异常。就像在 WPF 应用程序中使用“Current.DispatcherUnhandledException”一样。
这个问题完全是关于客户端(webassembly)异常处理的。我正在使用 Blazor 版本 3.0.0-preview8.19405.7
我一直在寻找解决方案,但似乎它不存在。在 Microsoft 的文档 ( https://docs.microsoft.com/en-us/aspnet/core/blazor/handle-errors?view=aspnetcore-3.0 ) 上,有一个可能发生错误的地方列表以及有关如何操作的演练处理每一个。它相信必须有一种更防弹的方法来捕获所有。
监视我的全局异常日志这个错误似乎无法删除,无论我做什么,我以为我终于摆脱它但它又回来了.您可以在此处查看类似帖子上的错误痕迹.
关于环境的说明:
IIS 6.0,.NET 3.5 SP1 单服务器 ASP.NET应用程序
已采取的步骤:
<system.web>
<machineKey validationKey="big encryption key"
decryptionKey="big decryption key"
validation="SHA1" decryption="AES" />
Run Code Online (Sandbox Code Playgroud)
在我的所有页面的页面基础中
protected override void OnInit(EventArgs e)
{
const string viewStateKey = "big key value";
Page.ViewStateUserKey = viewStateKey;
}
Run Code Online (Sandbox Code Playgroud)
同样在页面的源代码中,我可以看到所有ASP.NET生成的隐藏字段都正确地位于页面顶部.
我注意到"favicon.ico"在使用谷歌浏览器和Visual Studio开发服务器时,请求被传递到我的ASP .NET MVC控制器工厂.该controllerType参数的值null不出所料导致未处理的异常,我只知道因为错误日志.
请求来自哪里的想法以及为什么ASP .NET会让它进入控制器工厂?例如,CSS文件和图像被正确过滤掉了.
注意:我对禁用WER 不感兴趣,我对WER未启动的崩溃场景感兴趣,尽管它应该和Windows"默默地"终止应用程序.
在Windows XP上,编写一个C或C++应用程序(在用户模式下)是非常简单的,它会以这样的方式混淆自己的地址空间,当最终引发访问冲突(或其他未处理的Win32异常)时,Windows XP将会只是默默地终止进程而不通知用户:
...
void stackbreaker() {
printf("%s\n", __FUNCTION__);
// global/static buffer
static char buf[128] = "In a hole in the ground there lived a hobbit. And it burrowed through your stack. It even built a round door into you function.";
// Get address on the stack
char local;
char* stack = &local;
// nuke the stack:
memcpy(stack - 64, buf, sizeof(buf));
// Kaboom. No user defined unhandled exception filter will …Run Code Online (Sandbox Code Playgroud) winapi unhandled-exception visual-c++ windows-7 windows-error-reporting
我将Nuget源代码部署到我公司的Web服务器,但是当导航到URL时,我收到以下错误(从服务器上的事件查看器中提取):
Event code: 4011
Event message: An unhandled access exception has occurred.
Event time: 11/6/2013 9:02:54 AM
Event time (UTC): 11/6/2013 3:02:54 PM
Event ID: 2f5d6f7e594e47259b6dc050f82fc57d
Event sequence: 2
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/2/ROOT/Nuget-3-130282237713215393
Trust level: Full
Application Virtual Path: /Nuget
Application Path: E:\omitted\omitted\Nuget\
Machine name: SERVERNAME
Process information:
Process ID: 1420
Process name: w3wp.exe
Account name: DOMAIN\serviceAccount
Request information:
Request URL: http://subdomain.domain.net/nuget
Request path: /nuget
User host address: ***.**.***.**
User:
Is authenticated: …Run Code Online (Sandbox Code Playgroud) 我有一个VS2010的问题,调试器停止时出现Unhandled Exception.但是,例外肯定是处理的.事实上,如果我把代码放在catch块中,当我按下F5时我会点击它.在Debug - > Exceptions中,我绝对没有选中"Thrown"复选框,因此IMO绝对没有理由弹出未处理的异常对话框...
我无法发布确切的代码,但很快就可以处理样本了.违规代码部分背后的基本思想是我有一个与硬件对话的线程,如果我有一个错误与它交谈,那么我抛出一个HardwareException.线程启动BeginInvoke时,我调用时会在回调处理程序中捕获异常EndInvoke.
当在调试器中抛出异常时,我得到一个消息框,上面写着"硬件异常不由用户代码处理".但它是!!!
编辑 - 嗯,这让我发疯了.我有示例代码,代表我在我的应用程序中的代码,它看起来像这样:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Remoting.Messaging;
using System.Threading;
namespace ConsoleApplication1
{
public class HardwareException : ApplicationException
{
public HardwareException( string message) : base(message) {}
}
class Program
{
delegate void HardwareTestDelegate();
static void Main(string[] args)
{
HardwareTestDelegate d = new HardwareTestDelegate( HardwareTestThread);
d.BeginInvoke( HardwareTestComplete, null);
while( true);
}
static void HardwareTestThread()
{
throw new HardwareException( "this is a …Run Code Online (Sandbox Code Playgroud) 伙计们,
我在onCreate的顶部通过这样的代码片段捕获未处理的Android异常:
try {
File crashLogDirectory = new File(Environment.getExternalStorageDirectory().getCanonicalPath() + Constants.CrashLogDirectory);
crashLogDirectory.mkdirs();
Thread.setDefaultUncaughtExceptionHandler(new RemoteUploadExceptionHandler(
this, crashLogDirectory.getCanonicalPath()));
} catch (Exception e) {
if (MyActivity.WARN) Log.e(ScruffActivity.TAG, "Exception setting up exception handler! " + e.toString());
}
Run Code Online (Sandbox Code Playgroud)
我想在我的android应用程序中使用类似的二十几个AsyncTasks,因此捕获并记录了doInBackground中发生的未处理异常.
问题是,因为AsyncTask采用任意类型的初始化器,我不知道如何声明一个超类,我的所有AsyncTasks都继承了它,它设置了这个未处理的异常处理程序.
任何人都可以推荐一个好的设计模式来处理AsyncTask的doInBackground方法中的未处理异常,它不涉及每个新的AsyncTask定义的上述代码的复制和粘贴?
谢谢!
UPDATE
在仔细查看AsyncTask的来源之后,这是我使用的设计模式
import java.io.File;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Environment;
import android.util.Log;
public abstract class LoggingAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {
protected void setupUnhandledExceptionLogging(Context context) {
try {
File crashLogDirectory = new File(Environment.getExternalStorageDirectory().getCanonicalPath() + Constants.CrashLogDirectory);
crashLogDirectory.mkdirs();
Thread.setDefaultUncaughtExceptionHandler(new …Run Code Online (Sandbox Code Playgroud) java android exception unhandled-exception android-asynctask
在调试/运行我的metro应用程序时,我有一些奇怪的行为.在拖拽期间,屏幕将被刷新.我已经添加了一些功能来阻止绑定属性从刷新时拖拽正在进行中.
但有时应用程序崩溃了,但是我没有抛出一些我可以调试的异常,而是我得到的一个窗口就是打开一个外部即时调试器
SOME_APP.exe [7785]中发生了未处理的win32异常.
(外部调试器不会带来更多信息)
输出说:
SOME_APP.exe中0x05017145(Windows.UI.Xaml.dll)的未处理异常:0xC0000005:访问冲突读取位置0x00000088.
我正在使用x64设备.有人听说过这样的问题吗?
我意识到有一些关于preventDefault不工作的问题。但我的问题是关于相当简单的情况,即您有一个async函数并且抛出错误:
throw 'error of some kind';
Run Code Online (Sandbox Code Playgroud)
...然后你想要有一个“清理”功能来捕获任何和所有此类错误。然后这将按预期工作:
window.addEventListener('unhandledrejection', function (event) {
console.log( 'unhandled Promise rejection, event: ', event );
// event.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
但如果我取消注释event.preventDefault(),我希望看到该throw消息不会作为错误打印到控制台。但它总是被打印出来。
我检查了一下以确保在这种情况下event确实如此cancelable。据称确实如此。
PS从我的实验看来是这样的
window.onunhandledrejection = event => {
...
};
Run Code Online (Sandbox Code Playgroud)
只是针对同一“unhandledrejection”事件实现同一侦听器的另一种方法。使用event.preventDefault()那里似乎也不起作用。
编辑
经过几次实验后,我似乎发现防止这种情况发生的唯一方法是try...catch在某个时刻吞掉错误(使用 ),最好是在堆栈中的最高async调用处(或者更确切地说,在函数调用序列中async),如果可以确定的话。
throw 'error of some kind';
Run Code Online (Sandbox Code Playgroud)
javascript error-handling firefox unhandled-exception promise
我正在用 C# 开发一个 UWP 应用程序,并且我附加了一个未处理异常的处理程序,它向我们发送未处理的异常,以便我们可以诊断它们)。
我收到大量
System.Exception - 未指定的错误(来自 HRESULT 的异常:0x80004005)
没有任何堆栈跟踪或其他附加信息。
这在本地调试中从未发生过,但仅在实际用户的生产中发生过,从未抱怨过这个问题,所以我想这似乎是一个可能不会影响用户的无声错误。
无论如何,我对让这个问题悬而未决感到有点不安。
我怎样才能找到这个问题的罪魁祸首?
有没有人遇到过这个问题?
谢谢!