- 监听未处理异常
using System;
public class ExceptionHandler : MonoBehaviour
{
void Awake()
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
}
void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
if (args == null || args.ExceptionObject == null)
{
return;
}
try
{
if (args.ExceptionObject.GetType() != typeof(System.Exception))
{
return;
}
}
catch
{
return;
}
Exception ex = (Exception)e.ExceptionObject;
Debug.LogError("Unhandled exception: " + ex.Message);
// 这里可以添加额外的日志记录、错误报告或清理代码
}
void OnDestroy()
{
AppDomain.CurrentDomain.UnhandledException -= CurrentDomain_UnhandledException;
}
}
- 监听日志
using UnityEngine;
public class LogListener : MonoBehaviour
{
void OnEnable()
{
Application.logMessageReceived += HandleLog;
}
void OnDisable()
{
Application.logMessageReceived -= HandleLog;
}
void HandleLog(string logString, string stackTrace, LogType type)
{
if (type == LogType.Exception || type == LogType.Assert)
{
Debug.LogError($"Caught {type}: {logString}\n{stackTrace}");
// 在这里添加你的自定义处理逻辑,比如记录到文件或发送到服务器
}
}
}