diff --git a/src/de/deadlocker8/budgetmaster/logic/ExceptionHandler.java b/src/de/deadlocker8/budgetmaster/logic/ExceptionHandler.java
index 65c70667af0213cb7ce5e1bc6030893935939ae5..40aa9bbc3f3b3087a356a9f710e16c893d4fd6a3 100644
--- a/src/de/deadlocker8/budgetmaster/logic/ExceptionHandler.java
+++ b/src/de/deadlocker8/budgetmaster/logic/ExceptionHandler.java
@@ -7,8 +7,13 @@ public class ExceptionHandler
 		if(e instanceof ServerConnectionException)
 		{
 			return handleServerConnectionException(e);
-		}		
+		}			
 		
+		if(e.getMessage() == null)
+		{
+			return "Unbekannter Fehler (" + e.getClass() + ")";
+		}
+				
 		if(e.getMessage().contains("Connection refused"))
 		{
 			return "Server nicht erreichbar.";
diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChartGenerator.java
index 70c380cdd257b9892694009c2f1d265eb76213a6..77efcd715afaed985db53c936ea3e37041b3d6fc 100644
--- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChartGenerator.java
+++ b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChartGenerator.java
@@ -25,10 +25,17 @@ public class CategoriesChartGenerator
 	public CategoriesChartGenerator(String title, ArrayList<CategoryInOutSum> categoryInOutSums, boolean useBudgetIN, String currency)
 	{
 		this.title = title;
-		this.categoryInOutSums = categoryInOutSums;
+		if(categoryInOutSums == null)
+		{
+			this.categoryInOutSums = new ArrayList<>();
+		}
+		else
+		{
+			this.categoryInOutSums = categoryInOutSums;
+		}		
 		this.useBudgetIN = useBudgetIN;
 		this.currency = currency;
-		this.total = getTotal(categoryInOutSums, useBudgetIN);
+		this.total = getTotal(this.categoryInOutSums, useBudgetIN);
 	}	
 
 	public VBox generate()
@@ -64,7 +71,7 @@ public class CategoriesChartGenerator
 			currentPart.prefWidthProperty().bind(chart.widthProperty().multiply(percentage));
 
 			Tooltip tooltip = new Tooltip();
-			tooltip.setText(Helpers.NUMBER_FORMAT.format(percentage*100) + " %\n" + Helpers.NUMBER_FORMAT.format(value).replace(".", ",") + currency);//
+			tooltip.setText(currentItem.getName() + "\n" + Helpers.NUMBER_FORMAT.format(percentage*100) + " %\n" + Helpers.NUMBER_FORMAT.format(value).replace(".", ",") + currency);//
 			currentPart.setTooltip(tooltip);
 		}
 
@@ -75,6 +82,18 @@ public class CategoriesChartGenerator
 
 	public GridPane generateLegend()
 	{
+		GridPane legend = new GridPane();
+		legend.setPadding(new Insets(10));
+		legend.setHgap(20);
+		legend.setVgap(10);
+		legend.setAlignment(Pos.CENTER);
+		legend.setStyle("-fx-background-color: #EEEEEE; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;");
+
+		if(categoryInOutSums.size() == 0)
+		{
+			return legend;
+		}	
+		
 		ArrayList<HBox> legendItems = new ArrayList<>();
 		for(CategoryInOutSum currentItem : categoryInOutSums)
 		{
@@ -87,13 +106,7 @@ public class CategoriesChartGenerator
 		}
 
 		int legendWidth = (int)Math.ceil(Math.sqrt(legendItems.size()));
-		GridPane legend = new GridPane();
-		legend.setPadding(new Insets(10));
-		legend.setHgap(20);
-		legend.setVgap(10);
-		legend.setAlignment(Pos.CENTER);
-		legend.setStyle("-fx-background-color: #EEEEEE; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;");
-
+		
 		for(int i = 0; i < legendItems.size(); i++)
 		{
 			int columnIndex = i % legendWidth;
@@ -123,7 +136,7 @@ public class CategoriesChartGenerator
 	}
 
 	private double getTotal(ArrayList<CategoryInOutSum> categoryInOutSums, boolean useBudgetIN)
-	{
+	{		
 		double total = 0;
 		for(CategoryInOutSum currentItem : categoryInOutSums)
 		{
diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java
index 3b5140da494b0ad1fae519f54e6452b4a70ae759..35ae4150cb591b96c5bab30029a588107b5f55d3 100644
--- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java
+++ b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java
@@ -26,7 +26,14 @@ public class MonthChartGenerator
 
 	public MonthChartGenerator(ArrayList<MonthInOutSum> monthInOutSums, String currency)
 	{
-		this.monthInOutSums = monthInOutSums;		
+		if(monthInOutSums == null)
+		{
+			this.monthInOutSums = new ArrayList<>();
+		}
+		else
+		{
+			this.monthInOutSums = monthInOutSums;
+		}
 		this.currency = currency;
 	}
 
@@ -37,7 +44,7 @@ public class MonthChartGenerator
 		generatedChart.setSpacing(25);
 
 		double total = getMaximum(monthInOutSums);
-
+			
 		for(MonthInOutSum currentMonthSum : monthInOutSums)
 		{
 			VBox chartPart = new VBox();
@@ -115,6 +122,18 @@ public class MonthChartGenerator
 
 	public GridPane generateLegend()
 	{
+		GridPane legend = new GridPane();
+		legend.setPadding(new Insets(10));
+		legend.setHgap(20);
+		legend.setVgap(10);
+		legend.setAlignment(Pos.CENTER);
+		legend.setStyle("-fx-background-color: #EEEEEE; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;");
+		
+		if(monthInOutSums.size() == 0)
+		{
+			return legend;
+		}		
+		
 		ArrayList<HBox> legendItems = new ArrayList<>();
 		for(CategoryInOutSum currentItem : monthInOutSums.get(0).getSums())
 		{
@@ -126,13 +145,7 @@ public class MonthChartGenerator
 			legendItems.add(getLegendItem(label, currentItem.getColor()));
 		}
 
-		int legendWidth = (int)Math.ceil(Math.sqrt(legendItems.size()));
-		GridPane legend = new GridPane();
-		legend.setPadding(new Insets(10));
-		legend.setHgap(20);
-		legend.setVgap(10);
-		legend.setAlignment(Pos.CENTER);
-		legend.setStyle("-fx-background-color: #EEEEEE; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;");
+		int legendWidth = (int)Math.ceil(Math.sqrt(legendItems.size()));		
 
 		for(int i = 0; i < legendItems.size(); i++)
 		{
@@ -180,7 +193,7 @@ public class MonthChartGenerator
 	}
 
 	private double getMaximum(ArrayList<MonthInOutSum> monthInOutSums)
-	{
+	{		
 		double maximum = 0;
 		for(MonthInOutSum currentItem : monthInOutSums)
 		{
diff --git a/src/de/deadlocker8/budgetmaster/ui/CategoryController.java b/src/de/deadlocker8/budgetmaster/ui/CategoryController.java
index 52e908a7fbafa75bb17f8e33b56ac056b2413b14..8a86686a8d5455a544882ddc0253e741c337d537 100644
--- a/src/de/deadlocker8/budgetmaster/ui/CategoryController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/CategoryController.java
@@ -162,7 +162,7 @@ public class CategoryController implements Refreshable
 		}
 		catch(Exception e)
 		{
-			e.printStackTrace();
+			Logger.error(e);
 			controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e));
 		}
 	}
diff --git a/src/de/deadlocker8/budgetmaster/ui/ChartController.java b/src/de/deadlocker8/budgetmaster/ui/ChartController.java
index 8f441807532cee530bc2a21df8dae0dcf4670831..6f9e336ddcd7a7a27f4a9e367f14103874b7e9b8 100644
--- a/src/de/deadlocker8/budgetmaster/ui/ChartController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/ChartController.java
@@ -7,6 +7,7 @@ import org.joda.time.DateTime;
 import org.joda.time.format.DateTimeFormat;
 
 import de.deadlocker8.budgetmaster.logic.CategoryInOutSum;
+import de.deadlocker8.budgetmaster.logic.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.Helpers;
 import de.deadlocker8.budgetmaster.logic.MonthInOutSum;
 import de.deadlocker8.budgetmaster.logic.ServerConnection;
@@ -146,8 +147,7 @@ public class ChartController implements Refreshable
 		catch(Exception e)
 		{
 			Logger.error(e);
-			// TODO
-			// controller.showConnectionErrorAlert(e.getMessage());
+			controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e));
 		}
 	}
 
@@ -206,8 +206,7 @@ public class ChartController implements Refreshable
 		catch(Exception e)
 		{
 			Logger.error(e);
-			// TODO
-			// controller.showConnectionErrorAlert(e.getMessage());
+			controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e));
 		}
 	}
 
diff --git a/src/de/deadlocker8/budgetmaster/ui/Controller.java b/src/de/deadlocker8/budgetmaster/ui/Controller.java
index 1888e00c172aa44f43048e5eed571a1b914f8647..408d23943441fc9ab15b41c4f58e3cae847b9362 100644
--- a/src/de/deadlocker8/budgetmaster/ui/Controller.java
+++ b/src/de/deadlocker8/budgetmaster/ui/Controller.java
@@ -232,6 +232,7 @@ public class Controller
 	{		
 		if(!alertIsShowing)
 		{
+			alertIsShowing = true;
 			Platform.runLater(() -> {
 				toggleAllTabsExceptSettings(true);
 				tabPane.getSelectionModel().select(tabSettings);	
@@ -242,11 +243,11 @@ public class Controller
 				alert.setHeaderText("");
 				if(errorMessage == null)
 				{
-					alert.setContentText("Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte überprüfe deine Einstellungen und ob der Server läuft.");
+					alert.setContentText("Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte überprüfe deine Einstellungen.");
 				}
 				else
 				{
-					alert.setContentText("Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte überprüfe deine Einstellungen und ob der Server läuft.\n\n"
+					alert.setContentText("Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte überprüfe deine Einstellungen.\n\n"
 							+ "Fehlerdetails:\n" + errorMessage);
 				}