C# 正在转换公共重写字符串以尝试{}捕获?
我试图在这个语句上使用try{…}catch,因为它太大,会导致模拟器崩溃。当它将其转换为字符串时,即。所以解决方法是尝试{…}捕捉 我该怎么做呢 错误:C# 正在转换公共重写字符串以尝试{}捕获?,c#,C#,我试图在这个语句上使用try{…}catch,因为它太大,会导致模拟器崩溃。当它将其转换为字符串时,即。所以解决方法是尝试{…}捕捉 我该怎么做呢 错误: System.NullReferenceException: Object reference not set to an instance of an object. at Plus.Messages.Net.GamePacketParser.handlePacketData(Byte[] Data) in C:\Users\Admi
System.NullReferenceException: Object reference not set to an instance of an object.
at Plus.Messages.Net.GamePacketParser.handlePacketData(Byte[] Data) in C:\Users\Administrator\Desktop\Emulator\Messages\Net\GamePacketParser.cs:line 75
Date/Time: 2018-02-08 13:27:05,435
Thread: 25
Packet Error!
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at Plus.Communication.Packets.Incoming.ClientPacket.ToString()
at Plus.HabboHotel.GameClients.GameClient.parser_onNewPacket(ClientPacket
信息
在Plus.Messages.Net.GamePacketParser.handlePacketDataByte[]数据中
有人说,
我特别建议包装这条线
代码:
Plus.Communication.Packets.Incoming.ClientPacket.ToString
在try{}catch块中,尝试将clientpacket解析为字符串,并捕获得到的内存异常,这样,过大的数据包不会使仿真器崩溃,但会被忽略,不会通过
您可以在return语句之前标记变量:
public override string ToString()
{
try
{
var str = "[" + Header + "] BODY: " +
(PlusEnvironment
.GetDefaultEncoding()
.GetString(Body)
.Replace(Convert.ToChar(0).ToString(), "[0]"));
// return if no exception is thrown
return str;
}
catch (System.Exception e)
{
return e.Message:
}
}在variableConvert.ToChar0.ToString中拆分指令是愚蠢的。您使用的是一个文本整数,并将其转换为一个字符,然后转换为一个字符串。只需使用0,就不必强制转换。因为它太大,会导致模拟器崩溃Eeehm,什么?你的应用不会因为语句太大而崩溃,不管这意味着什么。这是因为你有一个例外。发布该异常为什么不能将该语句包装在try块和catch块返回中,不管错误返回值是什么?在这里使用try/catch并不是一个解决方案。充其量这是一个粗糙的解决方法,最坏的情况下,它隐藏了实际的问题。找出那是什么并解决它。
public override string ToString()
{
try
{
var str = "[" + Header + "] BODY: " +
(PlusEnvironment
.GetDefaultEncoding()
.GetString(Body)
.Replace(Convert.ToChar(0).ToString(), "[0]"));
// return if no exception is thrown
return str;
}
catch (System.Exception e)
{
return e.Message:
}