I can't figure out how to print an error when it happens in another class. Here is some example code taken from CustomDataBitcoinAlgorithm.py fromĀ 

https://www.quantconnect.com/docs/algorithm-reference/importing-custom-datafrom clr import AddReference

from System import *
from QuantConnect import *
from QuantConnect.Algorithm import *
from QuantConnect.Data import SubscriptionDataSource
from QuantConnect.Python import PythonData

from datetime import date, timedelta, datetime
import numpy as np
import json

class CustomDataBitcoinAlgorithm(QCAlgorithm):

def Initialize(self):
self.SetStartDate(2020, 7, 13)
self.SetEndDate(datetime.now().date() - timedelta(1))
# Define the symbol and "type" of our generic data:
self.AddData(Bitcoin, "BTC")

def OnData(self, data):
if not data.ContainsKey("BTC"): return

close = data["BTC"].Close

# If we don't have any weather "SHARES" -- invest"
if not self.Portfolio.Invested:
# Weather used as a tradable asset, like stocks, futures etc.
self.SetHoldings("BTC", 1)
self.Debug("Buying BTC 'Shares': BTC: {0}".format(close))

self.Debug("Time: {0} {1}".format(datetime.now(), close))

class Bitcoin(PythonData):
'''Custom Data Type: Bitcoin data from Quandl - http://www.quandl.com/help/api-for-bitcoin-data'''

def GetSource(self, config, date, isLiveMode):
raise ValueError('error?')
except Exception as e: Console.Write(e)

return SubscriptionDataSource("https://www.quandl.com/api/v3/datasets/BCHARTS/BITSTAMPUSD.csv?order=asc", SubscriptionTransportMedium.RemoteFile);

def Reader(self, config, line, date, isLiveMode):
coin = Bitcoin()
coin.Symbol = config.Symbol

# Example Line Format:
# Date Open High Low Close Volume (BTC) Volume (Currency) Weighted Price
# 2011-09-13 5.8 6.0 5.65 5.97 58.37138238, 346.0973893944 5.929230648356
if not (line.strip() and line[0].isdigit()): return None

data = line.split(',')

# If value is zero, return None
value = data[4]
if value == 0: return None

coin.Time = datetime.strptime(data[0], "%Y-%m-%d")
coin.Value = value
coin["Open"] = float(data[1])
coin["High"] = float(data[2])
coin["Low"] = float(data[3])
coin["Close"] = float(data[4])
coin["VolumeBTC"] = float(data[5])
coin["VolumeUSD"] = float(data[6])
coin["WeightedPrice"] = float(data[7])
return coin;

except ValueError:
# Do nothing, possible error in json decoding
return None

I removed some parts of the code that were used for live trading. In the GetSource function I added a try except and raised an exception. I can print in that function normally using Console.Write, but it won't print the exception. The algo also doesn't trade at all when I add the exception. Any help would beĀ appreciated, thanks.