1 / 1 / 0
Регистрация: 15.01.2013
Сообщений: 19
1

Как исправить исключение System.TypeInitializationException

15.01.2013, 15:26. Показов 31740. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Не могу понять, как исправить исключение System.TypeInitializationException! Помогите с решением!
Скрин прилагается:

Заранее очень благодарен за помощь!
Миниатюры
Как исправить исключение System.TypeInitializationException  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2013, 15:26
Ответы с готовыми решениями:

System.TypeInitializationException: "Инициализатор типа "Forms.FormABC" выдал исключение."
System.TypeInitializationException: "Инициализатор типа "Forms.FormABC" выдал исключение." при...

Как исправить исключение "System.ArgumentOutOfRangeException"?
Говорит, что ошибки в 119 и 168 строках using System; using System.Collections.Generic;...

System.TypeInitializationException
System.TypeInitializationException: "Инициализатор типа "Rom24.Rom24" выдал исключение." ...

Помогите исправить "TypeInitializationException не обработано"
При компиляции данной программы выдает такое: Пока не очень разбираюсь,вот думаю лучше у...

18
Администратор
Эксперт .NET
9610 / 4752 / 761
Регистрация: 17.04.2012
Сообщений: 9,606
Записей в блоге: 14
15.01.2013, 15:35 2
Код в студию. По одной строке кода не могу сказать, в чём проблема.
Плюс вам подсказка:
MSDN
Если инициализация типа инициализатором класса завершилась сбоем, то будет создан объект TypeInitializationException, которому будет передана ссылка на исключение, созданное инициализатором класса этого типа.Базовое исключение хранится в свойстве InnerException объекта TypeInitializationException.
0
1 / 1 / 0
Регистрация: 15.01.2013
Сообщений: 19
15.01.2013, 15:44  [ТС] 3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
using System;
using System.Net.Sockets;
using c_game.controllers;
using c_game.crypt;
using c_game.db;
using c_game.logger;
using c_game.managers;
using c_game.model.events;
using c_game.model.items;
using c_game.model.npcs.ai;
using c_game.model.quests;
using c_game.model.skills2;
using c_game.network;
using c_game.network.loginauth;
using c_game.network.loginauth.send;
using c_game.staticf;
using c_game.tables;
using c_game.tables.multisell;
using c_game.world;
using c_game.geo;
 
namespace c_game
{
    class GameServer
    {
        public static GameServer gs = new GameServer();
        public string GameServergetInstance;
        public static GameServer getInstance()
        {
            return gs;
        }
 
        protected TcpListener _listener;
 
        public GameServer()
        {
            Console.Title = "Старт Игрового Сервера";
 
            CLogger.form();
            Cfg.init("all");
 
         //   DateTime next = DateTime.Now.AddMinutes(4000);
 
         //   TimeSpan ts = next - DateTime.Now;
 
         //   Console.WriteLine("hrs " + (int)ts.TotalHours + " total " + (int)(ts.Minutes)+" " + (int)(ts.TotalMinutes%60));
         //   return;
 
 
            PClassess.getInstance();
          //  return;
            //shop_conv.test();
           // Console.Write("end");
          //  return;
          //  double x = 100.01;
        //    x += -23;
         //   Console.WriteLine("res " + x);
          //  DateTime time1 = DateTime.Now;   //Точка начала отсчета времени 
        //    Console.ReadKey();               //Пауза до нажатия клавиши
         //   DateTime time2 = DateTime.Now;   //Точка окончания отсчета времени 
         //   long elapsedTicks = time2.Ticks - time1.Ticks;       // подсчитываем число тактов, один такт соответствует 100 наносекундам
         //   Console.WriteLine(elapsedTicks * 1E-7);  // делим на 10^7 для отображения времени в секундах
          //  Console.ReadKey();
            NetworkBlock.getInstance();
            GameTime.getInstance();
 
            IdFactory.getInstance().init();
 
            L2World.getInstance();
            MapRegionTable.getInstance();
            ZoneTable.getInstance();
 
            NpcTable.getInstance();
            NpcData.getInstance();
            SpawnTable.getInstance();
            StaticObjTable.getInstance().read();
            StructureTable.getInstance().read();
            TSkillTable.getInstance();
            ItemTable.getInstance();
            ItemHandler.getInstance();
            MultiSell.getInstance();
            Capsule.getInstance();
            RecipeTable.getInstance();
 
            MonsterRace.getInstance();
            
            AIManager.getInstance();
 
 
            BlowFishKeygen.genKey();
            CLogger.info("generated 20 blowfish keys");
 
            SQLjec.getInstance();
            ClassIdContainer.init();
            
 
            
            
 
            AdminAccess.getInstance();
 
            QuestManager.getInstance();
 
            AnnounceManager.getInstance();
 
            AllianceTable.getInstance();
            ClanTable.getInstance();
            
            CLogger.info("NpcServer: ");
            StaticObjTable.getInstance().Spawn();
            MonsterRace.getInstance().Spawn();
            SpawnTable.getInstance().Spawn();
            StructureTable.getInstance().init();
 
            HtmCache.getInstance();
 
            AuthThread.getInstance();
 
         //   GeoData.getInstance();
 
            CLogger.extra_info("listening game clients on port " + Cfg.SERVER_PORT);
            _listener = new TcpListener(Cfg.SERVER_PORT);
            _listener.Start();
 
            TcpClient clientSocket = default(TcpClient);
            while (true)
            {
                clientSocket = _listener.AcceptTcpClient();
                accept(clientSocket);
            }
        }
 
        private void accept(TcpClient clientSocket)
        {
            ClientManager.getInstance().addClient(clientSocket);
        }
    }
}
и сам код где выдает исключение!

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
using System.Diagnostics;
using c_game._test;
using c_game.tools;
using System;
using c_game.geo;
 
namespace c_game
{
    class Program
    {
        static void Main()
        {
           // test2.ss();
           // Cfg.init("all");
           // drop_l2j_to_rcs.ss();
 
            //short spdx = 300;
            //for (long s1 = 1; s1 < int.MaxValue; s1++)
            //{
            //    double x = 6000 * spdx;
            //}
            //double dx = (14107 - 12107), dy = 0, dz = 0;
            //double distance = Math.Sqrt(dx * dx + dy * dy);
 
            //int ticks = 1 + (int)(10 * distance / 300); ;
 
            //Console.WriteLine("ticks " + ticks);
 
 
            //int spd = 200;
            //double formula = (14400 * spd) / (11148.38709677421 * (spd / 4));
           //Console.WriteLine("result " + spd + " >> " + (formula == 5.16666666666666 ? "yes" : "no") + " " + formula);
 
 
            GameServer.getInstance();
          //  new GeoData().loadGeo();
          //  Console.WriteLine("end.");
          //  Console.ReadLine();
            Process.GetCurrentProcess().WaitForExit();
        }
    }
}
0
Администратор
Эксперт .NET
9610 / 4752 / 761
Регистрация: 17.04.2012
Сообщений: 9,606
Записей в блоге: 14
15.01.2013, 15:55 4
К сожалению, я не могу сам отладить этот код, т.к. это "верхушка айсберга". Запустите отладку и отпишитесь о свойстве InnerException в исключении или запустите обработку ошибки и напишите результат.
C#
1
2
3
4
5
try {
    GameServer.getInstance();
} catch (TypeInitializationException ex) {
    Console.WriteLine(ex.InnerException);
}
1
1 / 1 / 0
Регистрация: 15.01.2013
Сообщений: 19
15.01.2013, 16:15  [ТС] 5
Код
System.TypeInitializationException: Инициализатор типа "c_game.tables.PClassess"
 выдал исключение. ---> System.FormatException: Входная строка имела неверный фо
рмат.
   в System.Number.ParseDouble(String value, NumberStyles options, NumberFormatI
nfo numfmt)
   в System.Double.Parse(String s)
   в c_game.tables.PClassess..ctor() в C:\Users\Sergey\Desktop\l2game\l2game\c_g
ame\tables\PClassess.cs:строка 86
   в c_game.tables.PClassess..cctor() в C:\Users\Sergey\Desktop\l2game\l2game\c_
game\tables\PClassess.cs:строка 14
   --- Конец трассировки внутреннего стека исключений ---
   в c_game.tables.PClassess.getInstance()
   в c_game.GameServer..ctor() в C:\Users\Sergey\Desktop\l2game\l2game\c_game\Ga
meServer.cs:строка 50
   в c_game.GameServer..cctor() в C:\Users\Sergey\Desktop\l2game\l2game\c_game\G
ameServer.cs:строка 26
Добавлено через 8 минут
Код
System.TypeInitializationException: Инициализатор типа "c_game.tables.MapRegionT
able" выдал исключение. ---> MySql.Data.MySqlClient.MySqlException: Table 'rabbi
t_cgame.world_mapregion' doesn't exist
   в MySql.Data.MySqlClient.MySqlStream.ReadPacket()
   в MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& in
sertedId)
   в MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedR
ows, Int32& insertedId)
   в MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
   в MySql.Data.MySqlClient.MySqlDataReader.NextResult()
   в MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)

   в MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
   в c_game.tables.MapRegionTable..ctor() в C:\Users\Sergey\Desktop\l2game\l2gam
e\c_game\tables\MapRegionTable.cs:строка 37
   в c_game.tables.MapRegionTable..cctor() в C:\Users\Sergey\Desktop\l2game\l2ga
me\c_game\tables\MapRegionTable.cs:строка 13
   --- Конец трассировки внутреннего стека исключений ---
   в c_game.tables.MapRegionTable.getInstance()
   в c_game.GameServer..ctor() в C:\Users\Sergey\Desktop\l2game\l2game\c_game\Ga
meServer.cs:строка 70
   в c_game.GameServer..cctor() в C:\Users\Sergey\Desktop\l2game\l2game\c_game\G
ameServer.cs:строка 26
0
Администратор
Эксперт .NET
9610 / 4752 / 761
Регистрация: 17.04.2012
Сообщений: 9,606
Записей в блоге: 14
15.01.2013, 16:32 6
C#
1
PClassess.getInstance();
видимо вы неправильно используете метод, первое исключение говорит об этом (System.FormatException: Входная строка имела неверный формат), возможно вам необходимо изменить какое-то свойство.

rabbit_cgame.world_mapregion - этой таблицы нет в базе данных, об этом говорит второе исключение. Проверьте базу данных или имя таблицы.

Не по теме:

Не хочется никого обидеть, и судя по всему, это обращено не к вам, но этот интерфейс для линейки (как я понял из кода) - убожество. Может он хорош на языке, на котором написан оригинальный код, но на C# выглядит отвратно. IMHO

0
1453 / 845 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
15.01.2013, 16:42 7
Цитата Сообщение от tezaurismosis Посмотреть сообщение
Не хочется никого обидеть, и судя по всему, это обращено не к вам, но этот интерфейс для линейки (как я понял из кода) - убожество. Может он хорош на языке, на котором написан оригинальный код, но на C# выглядит отвратно. IMHO
Зайдите в раздел Java на этом форуме! Посмотрите примеры кода!
0
1 / 1 / 0
Регистрация: 15.01.2013
Сообщений: 19
15.01.2013, 17:02  [ТС] 8
мдеее)))
C#
1
2
3
4
5
6
7
8
9
System.TypeInitializationException: Инициализатор типа "c_game.tables.SpawnTable
" выдал исключение. ---> System.NullReferenceException: Ссылка на объект не указ
ывает на экземпляр объекта.
   в c_game.tables.SpawnTable.read(String path) в C:\Users\Sergey\Desktop\l2game
\l2game\c_game\tables\SpawnTable.cs:строка 86
   в c_game.tables.SpawnTable..ctor() в C:\Users\Sergey\Desktop\l2game\l2game\c_
game\tables\SpawnTable.cs:строка 24
   в c_game.tables.SpawnTable..cctor() в C:\Users\Sergey\Desktop\l2game\l2game\c
_game\tables\SpawnTable.cs:строка 13
0
Администратор
Эксперт .NET
9610 / 4752 / 761
Регистрация: 17.04.2012
Сообщений: 9,606
Записей в блоге: 14
15.01.2013, 17:34 9
Цитата Сообщение от LeniumSoft Посмотреть сообщение
Зайдите в раздел Java на этом форуме!
Ах, это Java. Как-то изучал, она сильно схожа с C#, но скажу честно, мне с непривычки больно читать этот код.
В таком случае стоит написать код для выполнения этих задач на Java, перевести его с C# не составляет проблем, как мне кажется. И ещё: обращение кода на C# - не самом быстром языке по части скорости выполнения к так же нерасторопной Java будет довольно медленным, это удар по производительности.
По поводу отладки
Код
System.NullReferenceException: Ссылка на объект не указ
ывает на экземпляр объекта.
   в c_game.tables.SpawnTable.read(String path) в C:\Users\Sergey\Desktop\l2game
\l2game\c_game\tables\SpawnTable.cs:строка 86
возможно path = null, попробуйте изменить его значение. И ещё раз задумайтесь о разумности использования этого API.
0
1 / 1 / 0
Регистрация: 15.01.2013
Сообщений: 19
15.01.2013, 17:38  [ТС] 10
вот 86 строка!

C#
1
 spawns.Add(new L2Spawn(Convert.ToInt32(stp.Attribute("id").Value), value, stp.Attribute("pos").Value.Split(' ')));
Код
возможно path = null, попробуйте изменить его значение. И ещё раз задумайтесь о разумности использования этого API.
я просто хочу попытаться запустить этот серв, и посмотреть что там вообще!!! За то что ты помагаеш, я те очень сильно благодарен!
0
Администратор
Эксперт .NET
9610 / 4752 / 761
Регистрация: 17.04.2012
Сообщений: 9,606
Записей в блоге: 14
15.01.2013, 17:48 11
В строке, которую вы привели c_game.tables.SpawnTable.read(String path) не используется, вы точно ту строку написали? Нужно из файла SpawnTable.cs
0
1 / 1 / 0
Регистрация: 15.01.2013
Сообщений: 19
15.01.2013, 17:52  [ТС] 12
Цитата Сообщение от tezaurismosis Посмотреть сообщение
В строке, которую вы привели c_game.tables.SpawnTable.read(String path) не используется, вы точно ту строку написали? Нужно из файла SpawnTable.cs
да точно от туда!
Вот весь код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Linq;
using c_game.logger;
using c_game.model.npcs;
using c_game.world;
 
namespace c_game.tables
{
    public class SpawnTable
    {
        private static SpawnTable instance = new SpawnTable();
        public static SpawnTable getInstance()
        {
            return instance;
        }
 
        public readonly SortedList<string, L2Territory> territorries = new SortedList<string, L2Territory>();
        public readonly List<L2Spawn> spawns = new List<L2Spawn>();
        public SpawnTable()
        {
            foreach (string path in Directory.EnumerateFiles(@"scripts\spawn\", "*.xml"))
                read(path);
 
            CLogger.info("SpawnTable: Created " + territorries.Count+" territories with "+npcs+" monsters.");
        }
 
        private long npcs = 0;
        public void read(string path)
        {
            XElement xml = XElement.Parse(File.ReadAllText(path));
            XElement ex = xml.Element("list");
            foreach (var m in ex.Elements())
            {
                if (m.Name == "territory")
                {
                    L2Territory zone = new L2Territory();
                    zone.name = m.Attribute("name").Value;
                    zone.controller = m.Attribute("controller").Value;
                    zone.start_active = bool.Parse(m.Attribute("start_active").Value);
 
                    foreach (var stp in m.Elements())
                    {
                        switch (stp.Name.LocalName)
                        {
                            case "npc":
                                int cnt = Convert.ToInt32(stp.Attribute("count").Value);
                                string pos = null;
                                if (stp.Attribute("pos") != null)
                                    pos = stp.Attribute("pos").Value;
                                zone.AddNpc(Convert.ToInt32(stp.Attribute("id").Value), cnt, stp.Attribute("respawn").Value, pos);
                                npcs += cnt;
                                break;
                            case "zone":
                                zone.AddPoint(stp.Attribute("loc").Value.Split(' '));
                                break;
                        }
                    }
 
                    zone.InitZone(); //создаем зону
                    if (territorries.ContainsKey(zone.name))
                        Console.WriteLine("dublicate zone name " + zone.name);
                    else
                        territorries.Add(zone.name, zone);
                }
                else if (m.Name == "spawn")
                {
                    foreach (var stp in m.Elements())
                    {
                        switch (stp.Name.LocalName)
                        {
                            case "npc":
                                {
                                    string respawn = stp.Attribute("respawn").Value;
                                    long value = Convert.ToInt32(respawn.Remove(respawn.Length - 1));
                                    if (respawn.Contains("s"))
                                        value *= 1000;
                                    else if (respawn.Contains("m"))
                                        value *= 60000;
                                    else if (respawn.Contains("h"))
                                        value *= 3600000;
                                    else if (respawn.Contains("d"))
                                        value *= 86400000;
 
                                    spawns.Add(new L2Spawn(Convert.ToInt32(stp.Attribute("id").Value), value, stp.Attribute("pos").Value.Split(' ')));
                                }
                                npcs++;
                                break;
 
                        }
                    }
                }
            }
        }
 
        bool nospawn = true;
        public void Spawn()
        {
            CLogger.extra_info("NpcServer spawn init.");
            if (nospawn)
            {
                CLogger.extra_info("NpcServer spawn done (blocked).");
                return;
            }
            long sp = 0;
            foreach (L2Territory t in territorries.Values)
            {
                sp += t.spawns.Count;
                t.Spawn();
            }
 
            sp += spawns.Count;
            foreach (L2Spawn s in spawns)
                s.init();
 
            CLogger.extra_info("NpcServer spawn done, #"+sp+" npcs.");
        }
 
        public void SunRise(bool y)
        {
            foreach (L2Territory t in territorries.Values)
                t.SunRise(y);
 
            foreach (L2Spawn s in spawns)
                s.SunRise(y);
        }
 
        public L2Object spawnOne(int id, int x, int y, int z, int h)
        {
            NpcTemplate template = NpcTable.getInstance().getNpcTemplate(id);
 
            L2Warrior o = new L2Warrior();
            o.setTemplate(template);
            //switch (template._type)
            //{
            //    case NpcTemplate.L2NpcType.warrior:
            //    case NpcTemplate.L2NpcType.zzoldagu:
            //    case NpcTemplate.L2NpcType.herb_warrior:
            //    case NpcTemplate.L2NpcType.boss:
            //        o = new L2Warrior();
            //        ((L2Warrior)o).setTemplate(template);
            //        break;
 
            //    default:
            //        o = new L2Citizen();
            //        ((L2Citizen)o).setTemplate(template);
            //        break;
            //}
            o.X = x;
            o.Y = y;
            o.Z = z;
            o.Heading = h;
 
            o.SpawnX = x;
            o.SpawnY = y;
            o.SpawnZ = z;
 
            L2World.getInstance().realiseEntry(o, null, true);
            o.onSpawn();
 
            return o;
        }
    }
}
0
Администратор
Эксперт .NET
9610 / 4752 / 761
Регистрация: 17.04.2012
Сообщений: 9,606
Записей в блоге: 14
15.01.2013, 18:34 13
Не вижу очевидных ошибок, проверь аргументы метода Add, может один из них null
C#
1
spawns.Add(new L2Spawn(Convert.ToInt32(stp.Attribute("id").Value), value, stp.Attribute("pos").Value.Split(' ')));
0
1 / 1 / 0
Регистрация: 15.01.2013
Сообщений: 19
16.01.2013, 11:30  [ТС] 14
проверил, но вроде все норм....!!!! Я уже хз чо делать!!!

Добавлено через 11 часов 42 минуты
есть еше какие нить предложения?)
0
76 / 66 / 1
Регистрация: 10.12.2011
Сообщений: 175
17.01.2013, 12:28 15
http://rghost.ru/43084446

Добавлено через 14 часов 27 минут
у него ошибка при билде этого сервера, по ссылке эта ошибка исправлена, пусть сделает себе *.diff и исправит у себя ошибку или использует выложенный мною по ссылке исходник.
1
1 / 1 / 0
Регистрация: 15.01.2013
Сообщений: 19
17.01.2013, 15:13  [ТС] 16
благадарю! А можно узнать, что там еше исправленно?
0
76 / 66 / 1
Регистрация: 10.12.2011
Сообщений: 175
17.01.2013, 15:30 17
исправлены все ошибки для успешного запуска сервера: добавлены таблицы в бд(от балды, можно сказать, чтоб сервер загружался), исправлено немного код и spawn-файл.
в мир я не заходил.

как я писал выше, сделай диф и посмотри различия
Миниатюры
Как исправить исключение System.TypeInitializationException  
1
1 / 1 / 0
Регистрация: 15.01.2013
Сообщений: 19
17.01.2013, 15:32  [ТС] 18
спс, ша проверю!
0
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 2
24.07.2014, 11:07 19
Здравствуйте, кто нибудь пожалуйста выложите файл fixedCSFreya.zip, спасибо.
0
24.07.2014, 11:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.07.2014, 11:07
Помогаю со студенческими работами здесь

Как исправить исключение?
Здравствуйте. Объясню суть программы (Точнее ее части) - Рандомно генерируется ключ. Если такой...

Необработанное исключение типа "System.IO.FileLoadException" в System.Windows.Forms.dll
Всем доброго времени суток! Возникла проблема при подключении...

Необработанное исключение типа "System.ArgumentException" в System.Drawing.dll
Доброго времени суток. Возникла проблема с загрузкой изображения из базы данных. Вот собственно...

Необработанное исключение типа "System.UnauthorizedAccessException" в System.Speech.dll
Когда начал компилировать такая вот ошибка вышла : &quot;Необработанное исключение типа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru